1
Я столкнулся с ошибкой, даже если я использую числовое значение в моем внешнем запросе.Ошибка в varchar для числового преобразования с дополнительным запросом
IF OBJECT_ID('tempdb..#TestNumeric') IS NOT NULL
BEGIN
DROP TABLE #TestNumeric
END
CREATE TABLE #TestNumeric (ids INT, Valu NVARCHAR(50))
INSERT INTO #TestNumeric
SELECT 1, '12345' UNION ALL
SELECT 1, '234234 23423' UNION ALL
SELECT 1, '234234'
;WITH CTE
AS
(
SELECT ids, Valu
, Convert(NUMERIC(18,0),Valu) as OriginalNumValue
, ISNUMERIC(Convert(NUMERIC(18,0), Valu)) IsNumericTrue
FROM #TestNumeric
WHERE ISNUMERIC(Valu) = 1
AND Valu not like '%[^0-9]%'
)
SELECT *
FROM CTE
WHERE Valu = 100
DROP TABLE #TestNumeric
Если я просто удалю условие WHERE, тогда он отображает только числовые значения. Даже если он дает ошибку и показывает другие строки при чтении.
Почему он читает другие строки во внешнем запросе, поскольку я уже фильтровал?
Возможный дубликат [Разделение TSQL на ноль, несмотря на отсутствие столбцов, содержащих 0] (http://stackoverflow.com/questions/5191701/tsql-divide-by-zero-encountered-despite-no-columns-containing-0) –
Некоторые дополнительные ссылки в [мой ответ здесь] (http://stackoverflow.com/a/7192951/73226) –
Но я физически загружаю строки в внешний псевдоним таблицы. не в том же объеме. Здесь немного путают. –