2

好的,所以我在 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

但事实证明,您可以将布尔值与 Like/Not Like 一起使用。

请指导我正确的方向。

谢谢

4

2 回答 2

1

如何反转您的搜索,例如查找与 AZ 不匹配的任何内容:

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

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

于 2012-05-03T16:10:21.740 回答
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
于 2012-05-03T16:16:36.307 回答