检查varchar()是否为int

时间:2019-03-07 16:27:37

标签: sql-server tsql

我在第三方应用程序中继承了一个包含字符串和整数的表格-我想拆分表格,但想知道确定该值是否为整数的最快方法?列是varchar(250)

e.g.
Save
123456
Edit
Save
123455
Delete
123444

3 个答案:

答案 0 :(得分:4)

我建议使用TRY_CONVERT,如果无法转换该值,它将返回NULL

SELECT TRY_CONVERT(int, YourColumn) AS intColumn
FROM YourTable
--WHERE TRY_CONVERT(int, YourColumn) IS NOT NULL --If you only want rows that converted.

如果您喜欢语法,则还可以使用TRY_CASTTRY_CAST(YourColumn AS int))。

答案 1 :(得分:4)

一种方法是使用SQL Server的增强型LIKE运算符:

SELECT col
FROM yourTable
WHERE col NOT LIKE '%[^0-9]%';

也可以选择使用TRY_CONVERT,但前提是您使用的是SQL Server的最新版本。

答案 2 :(得分:4)

我会使用TRY_CONVERT

declare @Something table(SomeVal varchar(50))

insert @Something values
('Save')
, ('123456')
, ('Edit')
, ('Save')
, ('123455')
, ('Delete')
, ('123444')

select *
from @Something s
where TRY_CONVERT(int, s.SomeVal) is not null