千家信息网

SQL SERVER 空格的坑”以及PostgreSQL类似的坑如何避开

发表于:2024-09-22 作者:千家信息网编辑
千家信息网最后更新 2024年09月22日,本篇文章为大家展示了SQL SERVER 空格的坑"以及PostgreSQL类似的坑如何避开,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。虽然公司在大力的往开
千家信息网最后更新 2024年09月22日SQL SERVER 空格的坑”以及PostgreSQL类似的坑如何避开

本篇文章为大家展示了SQL SERVER 空格的坑"以及PostgreSQL类似的坑如何避开,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

虽然公司在大力的往开源的数据库上转移,但传统数据库的使用在一段时间还是会存在的,最近开发的亲们报出一个怪异的现象,就是外部传进来得字符用在末尾带有 \u0001 (在SQL SERVER 里面这又特殊的含义可以理解为char(1)),存储进 nvarchar 字符类型后会带有一个空格(其实存进char也一样),而这样的数据在某些特殊的规则引擎或决策引擎中就会因为这多的一个空格而报错,而你去查的时候,他又不带空格。

大家可以注意下图,如果用len()SQL SERVER 的传统函数来查看末尾带有空格和不带有空格的 nvarchar 或 varchar 的变量,得到的长度是一样的,要通过datalenght 来查看才能看到数据之间的不同,但大部分开发查看字符长度,都是使用 SQL SERVER len() 并会得到一个错误结果。

而产生这个问题的主要原因是 SQL SERVER 如何比较字符的SQL SERVER 是遵循 ANSI/ISO SQL-92 规范来进行字符的比较。使得在字符处理中SQL 认为 字符串末尾带空格和 不带空格的对比 在大多数的比较中是相等的。

如果还不清晰,我们下面在做一个更直白的比较

OK 说到这里,上边带有末尾空格和不带有空格的字符串在处理中很多情况是一样的,实际上是不一样的。另外想 trim的同学 也可以省省心了,照样还是不一样。

反过来我们比对一下 POSTGRESQL ,主要的原因是有2

1 作为传统企业,或金融企业,POSTGRESQL 在收费到开源数据库转换中,会节省大量的人力物力(尤其对开发来说)

2 PG 火 (言简意赅)

PG 中是没有 NVARCHAR 这样的类型的,我们使用 VARCHAR (在SQL SERVER 中VARCHAR 也有类似上面的毛病) 和 PG的 text 类型,测试是在PG admin tools 上进行的,也是通过插入带有空格,和不带空格的数据来进测试

插入两条数据 id 为 2的是带有空格的

通过上图的比较和证明,PG可以清晰的在查询中分辨那个值里面包含空格,那些不是, PostgreSQL 版本 11 的这两种字符类型,是没有类似 SQL SREVER 那样的'坑'

这里如果我们使用PG 中的 char类型,也会出现和SQL SERVER 类似的情况,所以在使用PG 的过程中,如果可以还是尽量使用 varchar 类型 或 text 类型

结论 SQL SERVER 的空格的坑是实实在在的存在,如果要避开这个坑,光在数据库层面来搞,还是比较麻烦,并行在使用SQL SERVER 的 rtrim 函数去掉右空格也以失败告终,而POSTGRESQL varchar text 天然的屏蔽了这个问题,对于这类问题数据库本身就可以解决。从另一个侧面,也说明PG建表的字符字段,您还是尽量不要选择 CHAR 类型。

上述内容就是SQL SERVER 空格的坑"以及PostgreSQL类似的坑如何避开,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。

空格 字符 数据 类型 数据库 还是 末尾 传统 问题 开发 特殊 企业 内容 函数 原因 字符串 就是 引擎 情况 技能 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 杭州雷龙网络技术 不属于实现数据库系统安全性 虹口区节能软件开发服务商密度 苹果手机怎么设置网络安全 恒宝股份的软件开发人员 北京学软件开发学校有哪些 计算机网络技术ps 吉林特种网络技术分类资费 拿亿互联网科技有限公司投资 2008数据库连接报错53 腾讯qq服务器有多少 服务器回收厂家报价 档案数据库设计五步骤 永和租房软件开发 山东省教育网络安全攻防演练 网络安全支出表 软件开发相关专业认证 关于调整网络安全领导小组的通知 商品数据库如何修复的方法 清空sql数据库 web服务器安全实验报告 linux查看服务器编码 未将计算机与远程服务器之间 黑客文化与网络安全学什么 国家网络安全周时间节点 怀化专门做软件开发的公司 安卓应用软件开发服务咨询 网络安全检查有必要吗 服务器reboot是不是比较慢 会员信息数据库表设计
0