sql 中 upper 用法_sql 中 upper 函数转大写的技巧

上周看SQL教程。
UPPER函数很常用。

把字母转大写。
简单。

语法是 UPPER(column_name)。

比如查用户名。
原样是 'johndoe'。

用 UPPER(name)。
结果就是 'JOHNDOE'。

用在 WHERE条件里。
很方便。

比如用户输入 'JOHNDOE'。
不管存的是小写还是混合。

SELECT FROM users WHERE UPPER(name) = 'JOHNDOE'。

这样就能匹配到。

但要注意。
可能影响索引。
查询变慢。

数据量大的时候。
要小心。

可以建函数索引。
或者存之前统一格式。

中文或其他字符。
UPPER不改变。

比如 '用户ID:user1 2 3 '。
转成 '用户ID:USER1 2 3 '。

中文部分没变。
只有英文字母转大写。

这点很好。
不会误改其他字符。

替代方案也有。
比如 Oracle的 TRANSLATE。

或者 PostgreSQL的 regexp_replace。

甚至用 Python、Java 处理。

但 UPPER最直接。

就是字符串类型才行。
数字不行。

字段是 NULL。
结果也是 NULL。

Unicode支持。
不同数据库不一样。

最好测试一下。

总之。
UPPER很实用。

数据清洗、匹配、格式统一都用得上。

技巧掌握了。
查询方便很多。

注意兼容性和性能。
基本就够用了。

sql语句大小写有关系吗?

数据库表名大小写看系统,SQL大小写不敏感。

创建表时大小写一致,如:create table test_uporlow(id number, value varchar2 (2 0));
插入数据大小写不区分,如:insert into test_uporlow values(3 01 , 'Abcd');
查询大写A,用LIKE 'A%',如:select t., rowid from TEST_UPORLOW t where value like 'A%';
查询小写a,用LIKE 'a%',如:select t., rowid from TEST_UPORLOW t where value like 'a%';
大小写看数据库,写SQL要统一。
你自己掂量。

sql查询语句 like N'%%',N是代表什么意思

哎,这个N前缀还真挺烦人的,但确实得说清楚。
我上次在2 02 3 年帮朋友调试一个SQL Server存储过程,就因为这个踩了个坑。

他那个存储过程里要处理一个产品名称,本来想着直接写个字符串'Äpple',结果直接运行就报错,提示乱码。
后来我查了手册才发现,他们数据库默认代码页是Latin1 _General,但那个'Ä'是Unicode字符,必须用N'Äpple'才行。

这N前缀说白了就是告诉SQL Server,这字符串是Unicode编码的,别按默认代码页转。
哪怕你表里的列明明定义的是NVARCHAR或NCHAR类型,不加N前缀,执行的时候也可能出问题。
比如你在触发器里更新一个NVARCHAR列,更新语句写成SET column_name = '漢字',肯定转成乱码,得写成SET column_name = N'漢字'。

你看这个例子:EXECUTE Product_Info @name = N'Chain'。
这里加N前缀,就是确保无论在服务器端执行还是客户端发送,SQL Server都把'Chain'当作Unicode字符串处理。
不加N的话,如果默认代码页是ASCII,'Ch'显示正常,'ain'就变成两个乱码字节。

我还在想个细节,这个N前缀是不是所有SQL Server版本都支持?我记得以前用老版本的时候,有些地方加不加影响不大,但新版本对Unicode支持严格多了,这N前缀几乎成了标配。
你如果在新服务器上写存储过程、触发器或者视图,最好养成习惯,所有Unicode字符串常量都加N前缀。

反正你看着办吧,不差那俩字符,但省心。