2014-06-09 91 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

相關問題