2014-06-09 129 views
1

从客户端导入一些数据时,我必须验证列是以逗号分隔的,并且逗号之间的所有值都是字母。有我可以使用的功能吗?验证字符串是逗号分隔列表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' 

如何验证上述2个字符串?

谢谢

+2

你在这里的意思是什么?用逗号分隔的单个数字或用逗号分隔的单个字母? – Deepshikha

+0

嗨,我的意思是字符串根本不能有字母,但是可以提供数字,只要它们用逗号分隔 – user9969

+1

是'1,22,3'是好还是坏的字符串? –

回答

2

假设某些数字可以包含多个数字,并且该字符串不应以逗号开头或结尾,并且不应存在“空”值, ð实际上使每一个明确的测试:

@StringVariable NOT LIKE '%[^0-9,]%' AND 
@StringVariable NOT LIKE ',%' AND 
@StringVariable NOT LIKE '%,' AND 
@StringVariable NOT LIKE '%,,%' 

首先这些测试是“字符串不包含序列0-9,或在发现任何字符”。


可能有一种方法可以将这些检查结合起来,但我没有立即看到它。我还建议调查是否可以完全用例如一个表值参数,其类型为,设计为,用于存储多个值,与该字符串不同,并且也将被强制类型为例如。包含int值。

+0

感谢您的帮助。这给了我一些开始。 – user9969

0

在sql server中没有你想要的那种功能。

你应该使用一个分隔符的想法,而你的情况将是逗号

如果在你的字符串没有分隔符的话,那就是“@TestStringBad”的情况。如果有的话。你要检查它们中的每一个,如果它们是数字或不是函数ISNUMERIC。如果该值为数字,则返回1 ..

+0

'ISNUMERIC'对''''和'.'返回1。你真的认为这些数字? –

+0

如果你不想要这些符号,那么使用char代码可能是一个解决方案 – ElenA

+0

0-9的数字的char代码是从CHAR(48)-0到CHAR(57)-9 – ElenA

相关问题