0

我的数据库中有一些nvachar数据。

aaaa,bb1b,c+cc,1234,dser,5896

我需要两个选择 forOnly StringOnly Int。这是意思:

第一次选择的结果是 : aaaa,dser

第二次选择的结果是 : 1234,5896

如何?

4

2 回答 2

3

您可以使用LIKE来执行此比较。通过使用双重否定,您可以使用单个表达式执行测试:

declare @t table (val varchar(10) not null)
insert into @t(val)
select 'aaaa' union all
select 'bb1b' union all
select 'c+cc' union all
select '1234' union all
select 'dser' union all
select '5896'

select * from @t where val not like '%[^A-Z]%'
select * from @t where val not like '%[^0-9]%'

第一个select说“给我所有包含非字母字符的字符串”。同样,第二个说“给我所有包含非数字的字符串”

于 2012-05-29T07:25:21.443 回答
2

您需要检查正则表达式。

在您的示例中,查询如下所示:

SELECT * FROM example WHERE foo LIKE '%[0-9]%' AND foo NOT LIKE '%[A-Z]%'

SELECT * FROM example WHERE foo NOT LIKE '%[0-9]%' AND foo LIKE '%[A-Z]%'

也许您必须为不区分大小写的检查执行 UPPERCASE(foo) 。并在 NOT LIKE 表达式中添加其他字符,如 +、- 等。

请参阅:http: //msdn.microsoft.com/en-us/library/ms187489 (SQL.90).aspx

于 2012-05-29T07:17:39.703 回答