După cum a scris şi Răzvan, IsNumeric este o funcţie problematică.
Poţi încerca următoarea soluţie care verifică dacă un şir de caractere reprezintă un număr întreg pozitiv.
CREATE TABLE TestIsNumeric(Valoare
VARCHAR(25) PRIMARY KEY)
GO
INSERT INTO TestIsNumeric VALUES('123')
INSERT INTO TestIsNumeric VALUES(' 123 ')
INSERT INTO TestIsNumeric VALUES('.')
INSERT INTO TestIsNumeric VALUES('.1')
INSERT INTO TestIsNumeric VALUES('$123')
INSERT INTO TestIsNumeric VALUES('12e3')
INSERT INTO
TestIsNumeric VALUES('12 3')
INSERT INTO TestIsNumeric VALUES('e')
GO
SELECT '['+Valoare+']' AS Val,
ISNUMERIC(Valoare) AS Is_Numeric,
CASE
WHEN
LEN(RTRIM(LTRIM(Valoare)))>=1 AND LEN(RTRIM(LTRIM(Valoare)))<=18 AND PATINDEX('%[^0-9]%',RTRIM(LTRIM(Valoare)))=0 THEN 1
ELSE 0
END AS Este_Bigint_Pozitiv
FROM
TestIsNumeric
GO
Soluţia poate fi adaptată şi pentru valori care includ operatorii unari +/-, inclusiv pentru a putea accepta toate valorile numerice pozitice admise de BIGINT.