Fork me on GitHub

补充 6-13 《关于SQL SERVER 字段类型char(n) , nchar(n) , varchar(n) , nvarchar(n)》

今天补充一下《关于SQL SERVER 字段类型char(n) , nchar(n) , varchar(n) , nvarchar(n)》类型的区别

虽然两个字符串一样,但是定义的类型不一样,也是不同的,这里用加密来解释

如:

DECLARE @pas VARCHAR(100)='123456789'
DECLARE @pas2 NVARCHAR(100)='123456789'

这两个字符串看着一样的,但是一个是varchar,一个是nvarchar,如果是直接比较,肯定是一样的

如:

 

 可见,两个字符串是一样的,但是,重点来了

先给大家看一下代码:

复制代码
DECLARE @pas VARCHAR(100)='123456789'

DECLARE @pas2 NVARCHAR(100)='123456789'

IF @pas=@pas2

SELECT 1

SELECT HASHBYTES('SHA2_256',@pas)

SELECT HASHBYTES('SHA2_256',@pas2)
复制代码

先猜猜结果一样不?答案先给了,肯定不一样,因为字节数不一样,第一个@pas 9*1=9个字节,第二个@pas2 9*2=18个字节

来,直接看结果:

 

 

 

 

可以看见结果是不一样的,所以在定义的时候要注意,特别是像本文的列子所示

另外,再补充一个知识点:

在对数据做特殊处理的时候一定记得左右去空格,下面给出一个列子供大家参考

 

 

可见,下面两个都是一样的类型,但是第二个和第三个多了空格

所以导致结果不一样,至于我怎么知道的,别问,问就是踩过坑

曾经写过一个注册登录,就是因为定义的类型导致的,十分难受

 

今日补充结束,有问题的小伙伴可以关注留言,我会尽力帮大家解决疑惑

能帮朋友解决问题的记得给个关注支持一下,以后将多多分享SQL SERVER 相关知识

 

posted @   酒笙匿清栀  阅读(53)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示