Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Грешка при конвертиране на тип данни varchar

ДОБРЕ. Най-накрая създадох изглед, който работи:

SELECT TOP (100) PERCENT id, CAST(CASE WHEN IsNumeric(MyCol) = 1 THEN MyCol ELSE NULL END AS bigint) AS MyCol
FROM         dbo.MyTable
WHERE     (MyCol NOT LIKE '%[^0-9]%')

Благодарение на AdaTheDev и CodeByMoonlight . Използвах двата ви отговора, за да стигна до това. (Благодаря и на другите отговорили, разбира се)

Сега, когато правя обединения с други bigint col или правя нещо като „SELECT * FROM MyView where mycol=1“, той връща правилния резултат без грешки. Предполагам, че CAST в самата заявка кара оптимизатора на заявките да не разглежда оригиналната таблица, както каза Кристиан Хейтър, може да се случва с другите изгледи



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Най-ефективният начин в SQL Server за получаване на дата от дата+час?

  2. Нови функции в SQL Server 2017 (Database Engine)

  3. Как мога да свържа и направя група от текст в sql сървър?

  4. По-бързо ли е да АКТУАЛИЗИРАТЕ ред или да го ИЗТРИЕТЕ и ВМЪКНЕТЕ нов?

  5. Каква е разликата между char, nchar, varchar и nvarchar в SQL Server?