选择包含英语和非英语字符的行

时间:2012-05-03 16:06:19

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

好的,我在SQL Server的表中有一列。 每个记录都有一个字符串(即名称) 有些字符串有英文和非英文字符。

我必须只选择有英文和非英文字符的记录。

我该怎么做?

我的尝试...

Select * from Table
Where Nameofthecolumn NOT LIKE '%[A-Z]%'
Go

这会给我EMPTY表。

我确信至少有两条记录有英文和非英文字符。

我需要这两个记录作为输出。

我正在尝试

Select * from Table
Where Nameofthecolumn NOT LIKE '%[A-Z,a-z]%' AND Like '%[A-Z,a-z]%'
Go

但事实证明你可以使用布尔与喜欢/不喜欢。

请指导我正确的方向。

由于

2 个答案:

答案 0 :(得分:1)

如何扭转您的搜索,例如找到任何与A-Z不匹配的东西:

... WHERE col LIKE '%[^A-Z]%' AND col LIKE '%[A-Z]%';

如果排序规则不区分大小写,则不需要a-z,如果区分大小写,则可以添加COLLATE子句。但是你可能想要过滤出预期的空格,数字和其他非字母数字。

答案 1 :(得分:0)

你的意思是这样吗?

select 1 as field1,'1' as field2 into #data
union all select 1,'abc'
union all select 2,'abc'
union all select 3,'999'


SELECT * FROM 
(
select field1,field2
,MAX(CASE WHEN field2 NOT LIKE '%[A-Z,a-z]%' THEN 1 ELSE 0 END) OVER (PARTITION BY field1) 
 + MAX(CASE WHEN field2 LIKE '%[A-Z,a-z]%' THEN 1 ELSE 0 END) OVER (PARTITION BY field1) as chars 
FROM #data
) alias
WHERE chars =2