码迷,mamicode.com
首页 > 数据库 > 详细

SQL 有尾随空格字符串的比较与分析

时间:2020-10-10 17:10:49      阅读:31      评论:0      收藏:0      [点我收藏+]

标签:验证   ddn   字节   nbsp   udf   cbo   字符   qpi   nsx   

一、先说结论:
1、尾随空格不影响字符串的对比查询结果。
2、字符串的LEN(字符数(不含尾随空格))与DATALENGTH(字节数)可能不一样,需要根据实际业务场景选择使用。
 
二、问题描述:
一个字符串在与它后面加空格(尾随空格)的字符串,对比是否相等时,结果为什么是相等呢?
 
三、验证与分析:
先来看下面的SQL
DECLARE @strA VARCHAR(10) = ‘maco    ‘; --后面多几个尾随空格
DECLARE @strB VARCHAR(10) = ‘maco‘;
--1、判断 @strA = @strB
IF (@strA = @strB)  
  SELECT @strA , @strB,‘@strA与@strB相等‘;   
ELSE          
  SELECT @strA , @strB, ‘@strA与@strB不相等‘;
--运行结果   @strA与@strB相等
 
--2、判断 @strA =@strB and len(@strA)= len(@strB)
IF (@strA = @strB AND LEN(@strA) = LEN(@strB))  
  SELECT  LEN(@strA) , LEN(@strB) , ‘@strA与@strB相等‘; 
ELSE                            
  SELECT LEN(@strA) , LEN(@strB) ,  ‘@strA与@strB不相等‘;
--运行结果   @strA与@strB相等
 
--3、判断 @strA =@strB and datalength(@strA)= datalength(@strB)
  --判断两个字符串是否完全相等:在判断字符串内容是否一样的同时,用datalength比较字符串的字节数是否相等;
IF (@strA = @strB AND DATALENGTH(@strA) = DATALENGTH(@strB))  
  SELECT  DATALENGTH(@strA) , DATALENGTH(@strB), ‘@strA与@strB相等‘;
ELSE                                      
  SELECT  DATALENGTH(@strA) , DATALENGTH(@strB),  ‘@strA与@strB不相等‘; 
--运行结果  @strA与@strB不相等
 
--查看SQL Server的联机丛书发现:
--LEN()返回给定字符串表达式的字符数(不包含尾随空格),而不是返回字节数。DATALENGTH返回字节数。
--4、查看@str, LEN(), DATALENGTH()进行对比和验证如下:
SELECT  @strA, LEN(@strA) [LEN字符数(不包含尾随空格)], DATALENGTH(@strA)  DATALENGTH字节数
SELECT  @strB, LEN(@strB) [LEN字符数(不包含尾随空格)], DATALENGTH(@strB)  DATALENGTH字节数
技术图片技术图片
 
因此我们也可以推出结论:尾随空格不影响字符串的对比查询结果。
如下SQL语句,均能查出SENO = ‘10000922031‘数据
SELECT TOP 10 * FROM   [dbo].[BIGTABLE] WHERE SENO = ‘10000922031‘
SELECT TOP 10 * FROM   [dbo].[BIGTABLE] WHERE SENO = ‘10000922031     ‘--含尾随空格
技术图片技术图片
但以下SQL语句不能查出对应的数据(前置空格)
SELECT TOP 10 * FROM   [dbo].[BIGTABLE] WHERE SENO = ‘  10000922031‘--含尾随空格
 
(完)
 
 

SQL 有尾随空格字符串的比较与分析

标签:验证   ddn   字节   nbsp   udf   cbo   字符   qpi   nsx   

原文地址:https://www.cnblogs.com/mslong/p/13790151.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!