Sql server 仅选择编号为SQL Server的字符串
我只需要在我的表中选择字符串,但是这个表中有数字和字符串 例: 我的选择只需要返回ID:1、2、3Sql server 仅选择编号为SQL Server的字符串,sql-server,string,Sql Server,String,我只需要在我的表中选择字符串,但是这个表中有数字和字符串 例: 我的选择只需要返回ID:1、2、3 感谢作为Joe非常优秀的ISNUMERIC解决方案的替代方案,您可以使用PATINDEX确保您具有字母字符: SELECT ID FROM YourTable WHERE PATINDEX('%[a-z]%', name) > 0 这可能会稍微快一点,因为它会在字符串到达第一个字母字符时停止搜索。呃,id真的是一个单独的列,而名称是一个单独的列吗?如果您的select只需要
感谢作为Joe非常优秀的
ISNUMERIC
解决方案的替代方案,您可以使用PATINDEX
确保您具有字母字符:
SELECT ID
FROM YourTable
WHERE PATINDEX('%[a-z]%', name) > 0
这可能会稍微快一点,因为它会在字符串到达第一个字母字符时停止搜索。呃,id真的是一个单独的列,而名称是一个单独的列吗?如果您的select只需要返回1、2、3,那么您只需要表中的整数。是用空格分隔的吗?我想我知道为什么,但是你可以评论你为什么要做
+'.0e0'
,因为我不认为这是非常直观的需要。@恶心-因为你可以得到与ISNUMERIC
的意外匹配,因为它将对非int数据类型(如float)求值TRUE
<代码>12e10将以TRUE
的形式通过ISNUMERIC
。通过添加.0e0
可以强制它只检查整数值。@恶心:如果不检查整数值,ISNUMERIC将为“+”和“$”返回1。
SELECT ID
FROM YourTable
WHERE ISNUMERIC(Name + '.0e0') = 0
SELECT ID
FROM YourTable
WHERE PATINDEX('%[a-z]%', name) > 0