验证字符串是否为以逗号分隔的SQL Server 2008列表

验证字符串是否为以逗号分隔的SQL Server 2008列表,sql,sql-server-2008,Sql,Sql Server 2008,当从客户端导入一些数据时,我必须验证一列是否用逗号分隔,逗号之间的所有值是否都是字母。有我可以使用的功能吗 范例 DECLARE @TestStringGood varchar(255), @TestStringBad varchar(255) SET @TestStringGood = '1,3,4,8,9' SET @TestStringBad = '1,aa,33,1,b' or '4344343' 如何验证上述两个字符串 谢谢sql server中没有您想要的那种功能 您应该使用分

当从客户端导入一些数据时,我必须验证一列是否用逗号分隔,逗号之间的所有值是否都是字母。有我可以使用的功能吗

范例

DECLARE @TestStringGood varchar(255), @TestStringBad varchar(255)

SET @TestStringGood = '1,3,4,8,9'
SET @TestStringBad = '1,aa,33,1,b' or '4344343' 
如何验证上述两个字符串


谢谢

sql server中没有您想要的那种功能

您应该使用分隔符的概念,在您的例子中,分隔符将是逗号


如果字符串中根本没有分隔符,则为“@TestStringBad”大小写。如果有的话。您将使用函数ISNUMERIC检查它们是否为数字。如果值是一个数字,则返回1。

假设某些数字可以包含多个数字,并且字符串不应以逗号开头或结尾,并且不应存在“空”值,我实际上会使这些测试都显式:

@StringVariable NOT LIKE '%[^0-9,]%' AND
@StringVariable NOT LIKE ',%' AND
@StringVariable NOT LIKE '%,' AND
@StringVariable NOT LIKE '%,,%'
第一个测试是“字符串不包含在序列0-9或“”中未找到的任何字符”



也许有一种方法可以将这些检查结合起来,但我没有立即看到。我还建议您研究是否可以将此输入完全替换为表值参数,这是一种设计用于存储多个值的类型,与此字符串不同,它也可以是强类型,例如包含
int
值。

这里的字母是什么意思??用逗号分隔的单个数字或用逗号分隔的单个字母??嗨,我的意思是字符串不能有字母,但可以有数字,只要它们是用逗号分隔的。
1,22,3
是好字符串还是坏字符串?
ISNUMERIC
也会为
返回1。你真的认为这些是数字吗?如果你也不想要这些符号,那么使用字符代码可能是一种解决方案。0-9的字符代码是从字符(48)-0到字符(57)-9。我只是想指出,
ISNUMERIC
很少是解决问题的正确方法。事实上,我甚至可以说,每当我在代码中遇到
ISNUMERIC
时,我都会发现一个bug,其中有人没有意识到该函数实际答案的真正糟糕之处。谢谢你的帮助。这给了我一些开始。