例如:Temp表中A列为商品名称,请写出查询以大写字母开头的所有商品名称的T-SQL语句
15 个解决方案
#1
通过指定排序规则,就可以 Chinese_PRC_CS_AS,其中的cs表示 大小写敏感
create table temp(prod_name nvarchar(100))
insert into temp
select 'a' union all
select 'A'
select *
from temp
where prod_name = 'a' collate Chinese_PRC_CS_AS
/*
prod_name
a
*/
#2
create table Temp(id int,A varchar(10))
insert into Temp(id,A)
select 1,'Book' union all
select 2,'pen' union all
select 3,'Phone' union all
select 4,'Bag' union all
select 5,'paper'
select id,A from Temp
where ascii(left(A,1)) between ascii('A') and ascii('Z')
/*
id A
----------- ----------
1 Book
3 Phone
4 Bag
(3 row(s) affected)
*/
#3
抛弃效率的话,用UPPER()函数来试试
#4
很奇怪,我用like '[A-Z]%' collate Chinese_PRC_CS_AS 也无法实现这个需求
#5
标准答案给的是
SELECT A FROM Temp
WHERE A LIKE '[A-Z]% '
试了以后查询结果并没有区分大小写,就很迷惑
SELECT A FROM Temp
WHERE A LIKE '[A-Z]% '
试了以后查询结果并没有区分大小写,就很迷惑
#6
我也试了一下,这个WHERE A LIKE '[A-Z]% ' 确实有点问题,加上了排序规则,也还是不行。
对了,你有标准答案?
#7
#8
是一个教数据库的老师写的答案,显然,他的答案并不正确
#9
标准答案给的是
SELECT A FROM Temp
WHERE A LIKE '[A-Z]% '
试了以后查询结果并没有区分大小写,就很迷惑
我也试了一下,这个WHERE A LIKE '[A-Z]% ' 确实有点问题,加上了排序规则,也还是不行。
对了,你有标准答案?
是一个教数据库的老师写的答案,显然,他的答案并不正确
呵呵,老师嘛,可能理论比较强,但是实践不一定强,还有就是这个我觉得有点像是sql server 的bug,很奇怪
#10
select id,A from Temp
where ascii(left(A,1)) between ascii('A') and ascii('Z')
大神的答案是对的,可是查询这部分我还是有点不理解
#11
标准答案给的是
SELECT A FROM Temp
WHERE A LIKE '[A-Z]% '
试了以后查询结果并没有区分大小写,就很迷惑
我也试了一下,这个WHERE A LIKE '[A-Z]% ' 确实有点问题,加上了排序规则,也还是不行。
对了,你有标准答案?
是一个教数据库的老师写的答案,显然,他的答案并不正确
呵呵,老师嘛,可能理论比较强,但是实践不一定强,还有就是这个我觉得有点像是sql server 的bug,很奇怪
对啊,按理说单引号里的内容是区分大小写的,但就是查不出来
#12
标准答案给的是
SELECT A FROM Temp
WHERE A LIKE '[A-Z]% '
试了以后查询结果并没有区分大小写,就很迷惑
我也试了一下,这个WHERE A LIKE '[A-Z]% ' 确实有点问题,加上了排序规则,也还是不行。
对了,你有标准答案?
是一个教数据库的老师写的答案,显然,他的答案并不正确
呵呵,老师嘛,可能理论比较强,但是实践不一定强,还有就是这个我觉得有点像是sql server 的bug,很奇怪
二楼给的答案
select id,A from Temp
where ascii(left(A,1)) between ascii('A') and ascii('Z')
查询还是有点不明白
#13
标准答案给的是
SELECT A FROM Temp
WHERE A LIKE '[A-Z]% '
试了以后查询结果并没有区分大小写,就很迷惑
我也试了一下,这个WHERE A LIKE '[A-Z]% ' 确实有点问题,加上了排序规则,也还是不行。
对了,你有标准答案?
是一个教数据库的老师写的答案,显然,他的答案并不正确
呵呵,老师嘛,可能理论比较强,但是实践不一定强,还有就是这个我觉得有点像是sql server 的bug,很奇怪
二楼给的答案
select id,A from Temp
where ascii(left(A,1)) between ascii('A') and ascii('Z')
查询还是有点不明白
他采用的是没办法的办法,也就是首先left函数返回A列的第一个字符,然后通过ascii函数,取得这个字符的ascii码,因为大写字符,和小写字符的,ascii码是不一样的,所以就能判断了
#14
标准答案给的是
SELECT A FROM Temp
WHERE A LIKE '[A-Z]% '
试了以后查询结果并没有区分大小写,就很迷惑
我也试了一下,这个WHERE A LIKE '[A-Z]% ' 确实有点问题,加上了排序规则,也还是不行。
对了,你有标准答案?
是一个教数据库的老师写的答案,显然,他的答案并不正确
呵呵,老师嘛,可能理论比较强,但是实践不一定强,还有就是这个我觉得有点像是sql server 的bug,很奇怪
二楼给的答案
select id,A from Temp
where ascii(left(A,1)) between ascii('A') and ascii('Z')
查询还是有点不明白
他采用的是没办法的办法,也就是首先left函数返回A列的第一个字符,然后通过ascii函数,取得这个字符的ascii码,因为大写字符,和小写字符的,ascii码是不一样的,所以就能判断了
明白了,之前不知道left()函数的功能,Thank you,感谢大神的详细回复
#15
#1
通过指定排序规则,就可以 Chinese_PRC_CS_AS,其中的cs表示 大小写敏感
create table temp(prod_name nvarchar(100))
insert into temp
select 'a' union all
select 'A'
select *
from temp
where prod_name = 'a' collate Chinese_PRC_CS_AS
/*
prod_name
a
*/
#2
create table Temp(id int,A varchar(10))
insert into Temp(id,A)
select 1,'Book' union all
select 2,'pen' union all
select 3,'Phone' union all
select 4,'Bag' union all
select 5,'paper'
select id,A from Temp
where ascii(left(A,1)) between ascii('A') and ascii('Z')
/*
id A
----------- ----------
1 Book
3 Phone
4 Bag
(3 row(s) affected)
*/
#3
抛弃效率的话,用UPPER()函数来试试
#4
很奇怪,我用like '[A-Z]%' collate Chinese_PRC_CS_AS 也无法实现这个需求
#5
标准答案给的是
SELECT A FROM Temp
WHERE A LIKE '[A-Z]% '
试了以后查询结果并没有区分大小写,就很迷惑
SELECT A FROM Temp
WHERE A LIKE '[A-Z]% '
试了以后查询结果并没有区分大小写,就很迷惑
#6
标准答案给的是
SELECT A FROM Temp
WHERE A LIKE '[A-Z]% '
试了以后查询结果并没有区分大小写,就很迷惑
我也试了一下,这个WHERE A LIKE '[A-Z]% ' 确实有点问题,加上了排序规则,也还是不行。
对了,你有标准答案?
#7
create table Temp(id int,A varchar(10))
insert into Temp(id,A)
select 1,'Book' union all
select 2,'pen' union all
select 3,'Phone' union all
select 4,'Bag' union all
select 5,'paper'
select id,A from Temp
where ascii(left(A,1)) between ascii('A') and ascii('Z')
/*
id A
----------- ----------
1 Book
3 Phone
4 Bag
(3 row(s) affected)
*/
#8
标准答案给的是
SELECT A FROM Temp
WHERE A LIKE '[A-Z]% '
试了以后查询结果并没有区分大小写,就很迷惑
我也试了一下,这个WHERE A LIKE '[A-Z]% ' 确实有点问题,加上了排序规则,也还是不行。
对了,你有标准答案?
是一个教数据库的老师写的答案,显然,他的答案并不正确
#9
标准答案给的是
SELECT A FROM Temp
WHERE A LIKE '[A-Z]% '
试了以后查询结果并没有区分大小写,就很迷惑
我也试了一下,这个WHERE A LIKE '[A-Z]% ' 确实有点问题,加上了排序规则,也还是不行。
对了,你有标准答案?
是一个教数据库的老师写的答案,显然,他的答案并不正确
呵呵,老师嘛,可能理论比较强,但是实践不一定强,还有就是这个我觉得有点像是sql server 的bug,很奇怪
#10
select id,A from Temp
where ascii(left(A,1)) between ascii('A') and ascii('Z')
大神的答案是对的,可是查询这部分我还是有点不理解
#11
标准答案给的是
SELECT A FROM Temp
WHERE A LIKE '[A-Z]% '
试了以后查询结果并没有区分大小写,就很迷惑
我也试了一下,这个WHERE A LIKE '[A-Z]% ' 确实有点问题,加上了排序规则,也还是不行。
对了,你有标准答案?
是一个教数据库的老师写的答案,显然,他的答案并不正确
呵呵,老师嘛,可能理论比较强,但是实践不一定强,还有就是这个我觉得有点像是sql server 的bug,很奇怪
对啊,按理说单引号里的内容是区分大小写的,但就是查不出来
#12
标准答案给的是
SELECT A FROM Temp
WHERE A LIKE '[A-Z]% '
试了以后查询结果并没有区分大小写,就很迷惑
我也试了一下,这个WHERE A LIKE '[A-Z]% ' 确实有点问题,加上了排序规则,也还是不行。
对了,你有标准答案?
是一个教数据库的老师写的答案,显然,他的答案并不正确
呵呵,老师嘛,可能理论比较强,但是实践不一定强,还有就是这个我觉得有点像是sql server 的bug,很奇怪
二楼给的答案
select id,A from Temp
where ascii(left(A,1)) between ascii('A') and ascii('Z')
查询还是有点不明白
#13
标准答案给的是
SELECT A FROM Temp
WHERE A LIKE '[A-Z]% '
试了以后查询结果并没有区分大小写,就很迷惑
我也试了一下,这个WHERE A LIKE '[A-Z]% ' 确实有点问题,加上了排序规则,也还是不行。
对了,你有标准答案?
是一个教数据库的老师写的答案,显然,他的答案并不正确
呵呵,老师嘛,可能理论比较强,但是实践不一定强,还有就是这个我觉得有点像是sql server 的bug,很奇怪
二楼给的答案
select id,A from Temp
where ascii(left(A,1)) between ascii('A') and ascii('Z')
查询还是有点不明白
他采用的是没办法的办法,也就是首先left函数返回A列的第一个字符,然后通过ascii函数,取得这个字符的ascii码,因为大写字符,和小写字符的,ascii码是不一样的,所以就能判断了
#14
标准答案给的是
SELECT A FROM Temp
WHERE A LIKE '[A-Z]% '
试了以后查询结果并没有区分大小写,就很迷惑
我也试了一下,这个WHERE A LIKE '[A-Z]% ' 确实有点问题,加上了排序规则,也还是不行。
对了,你有标准答案?
是一个教数据库的老师写的答案,显然,他的答案并不正确
呵呵,老师嘛,可能理论比较强,但是实践不一定强,还有就是这个我觉得有点像是sql server 的bug,很奇怪
二楼给的答案
select id,A from Temp
where ascii(left(A,1)) between ascii('A') and ascii('Z')
查询还是有点不明白
他采用的是没办法的办法,也就是首先left函数返回A列的第一个字符,然后通过ascii函数,取得这个字符的ascii码,因为大写字符,和小写字符的,ascii码是不一样的,所以就能判断了
明白了,之前不知道left()函数的功能,Thank you,感谢大神的详细回复