我正在尝试搜索以下的自由文本列 - 一个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。
谢谢,
答案 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)