在字符串中搜索字母数字代码

时间:2014-08-08 10:02:39

标签: sql sql-server

我正在尝试搜索以下的自由文本列 - 一个8位数的代码,以F开头,后跟七位数 - 例如F1234567.这些代码可以位于字符串中的任何位置,长度可变。我试过这个:

case when [SHORT-DESCRIPTION] like '%[0-9]%' then 1 end --finds integers
case when [SHORT-DESCRIPTION] like '%F%' then 1 end --finds the letter F

这似乎是下一个合乎逻辑的步骤,但我的语法错误

case when [SHORT-DESCRIPTION] like '%F' & '%[0-9]%' then 1 end

它返回了以下错误:

The data types varchar and varchar are incompatible in the '&' operator.

有人能指出我正确的方向吗?我正在使用SQL Server 2008 R2。

谢谢,

3 个答案:

答案 0 :(得分:1)

我首先想到了正则表达式,但SQL 2008还没有完全支持它们。但是,您可以通过正常模式匹配(http://msdn.microsoft.com/en-us/library/ms187489(SQL.90).aspx)实现目标。

我已经对此进行了测试,并且可行:

like '%F[0-9][0-9][0-9][0-9][0-9][0-9][0-9]%'

答案 1 :(得分:0)

使用LIKE '%[a-z0-9]%代替'%[0-9]%''%F%'

答案 2 :(得分:0)

你可以试试这个:

WHEN LEN([SHORT-DESCRIPTION]) = 8 AND 

     PATINDEX('%[A-Z]%',[SHORT-DESCRIPTION]) = 1 AND 

     ISNUMERIC(SUBSTRING([SHORT-DESCRIPTION],2,8)) = 1 

     THEN 1 -- Alpha Numeric (F1234567)