在varchar列中查找包含符号的行

时间:2013-03-12 04:40:16

标签: sql sql-server sql-server-2008

如何选择varchar列包含SQL Server认为符号的任何字符的行?符号可以是字符串中的任何位置。

是否存在与C#char.IsSymbol()函数等效的SQL Server?

2 个答案:

答案 0 :(得分:5)

假设您对“符号”的定义是任何非字母数字字符。

您需要使用SQL Server的LIKE功能。

这将分别在开头,结尾和任何地方找到包含非字母数字的行。

Select * from MyTable where MyColumn like '[^a-zA-Z0-9]%'  -- Starts With

Select * from MyTable where MyColumn like '%[^a-zA-Z0-9]' -- Ends With

Select * from MyTable where MyColumn like '%[^a-zA-Z0-9]%' -- contains

最后一个的表现异常糟糕。

<强>参考

答案 1 :(得分:0)

<强> C#
您可以使用Indexof()搜索符号car的第一次出现,并与0进行比较以检查它是否出现在列值的开头。

您可以使用LastIndexof()搜索符号car的最后一次出现,并与inputstring.Length-3进行比较,以检查最后是否存在汽车。这里的inputtring是列值。

SQL Server
使用CHARINDEX()函数查找符号car

出现的位置
Select * from Table
where CHARINDEX('car',column_name)=1 or CHARINDEX('car',column_name) = LEN(column_name)-3


注意: CHARINDEX()返回的起始位置是从1开始的,而不是从0开始。