我有一个名为" name"在其他列之间。我正在使用sql函数进行实验,但我不知道为什么这不起作用。当我运行此代码时:
select name , upper(SUBSTRING(name,1,1)), SUBSTRING(name,1,1) from primeraTabla
我得到一张表:
name (no column name) (no column name)
paco P p
Fernando F F
....
但是当我尝试时:
select * from primeraTabla where upper(SUBSTRING(name,1,1)) = SUBSTRING(name,1,1)
应排除名为paco的第一行,但不是。过滤器无法正常工作。
所以问题是,为什么这个过滤器不起作用?
答案 0 :(得分:2)
尝试使用“ASCII”
select * from primeraTabla
where ascii(upper(SUBSTRING(name,1,1))) = ascii(SUBSTRING(name,1,1))
<强>结果:强>
name
--------------------
Fernando
答案 1 :(得分:1)
您必须使用 COLLATE Latin1_General_CS_AS
才能使搜索区分大小写。
<强>查询强>
select * from primeraTabla
where upper(SUBSTRING(name,1,1)) COLLATE Latin1_General_CS_AS = SUBSTRING(name,1,1);
即使您可以通过
永久更改任何表的任意列的排序规则<强>查询强>
ALTER TABLE [your_table_name]
ALTER COLUMN [your_column_name] VARCHAR(100)
COLLATE Latin1_General_CS_AS