zoukankan      html  css  js  c++  java
  • SQL Server ->> 字符串对比

    今天同事问我关于SQL Server在字符串尾随着空格时进行字符串对比的做法。关于这个问题正好在这里讲一下,就是SQL Server是按照ANSI/ISO SQL-92中的定义做字符串对比的。

    KB316626中已经做了阐述,就是SQL Server对待这种有尾随空格的字符是会做自动截断尾随空格再对比的。

    这里做个实验吧

    SELECT * FROM (
    SELECT 'A' A UNION ALL
    SELECT 'A ' UNION ALL
    SELECT 'A  ' UNION ALL
    SELECT 'A                           ') A
    WHERE A = 'A'
    
    SELECT A, COUNT(*) FROM (
    SELECT 'A' A UNION ALL
    SELECT 'A ' UNION ALL
    SELECT 'A  ' UNION ALL
    SELECT 'A                           ') A
    GROUP BY A
    
    SELECT A FROM (
    SELECT 'A' A UNION ALL
    SELECT 'A ' UNION ALL
    SELECT 'A  ' UNION ALL
    SELECT 'A                           ') A
    WHERE A like 'A %'

    上面这段代码会返回下面的结果

    可以看到SQL Server在做字符串对比和排序(其实排序也需要做字符串对比)是会截断尾随空格的,而在做LIKE匹配的时候则例外。

    那如果是空格开头呢?这个肯定是没有截断起始空格的。再做一个实验。

    SELECT * FROM (
    SELECT ' A' A UNION ALL
    SELECT 'A ' UNION ALL
    SELECT '  A  ') A
    WHERE A = 'A'
    
    
    SELECT A, COUNT(*) FROM (
    SELECT ' A' A UNION ALL
    SELECT 'A ' UNION ALL
    SELECT '  A  ' UNION ALL
    SELECT '   A                           ') A
    GROUP BY A

    上面这段代码会返回下面的结果

  • 相关阅读:
    Java不带.classpath的svn项目下载,转成到eclipse中
    eclipse 实用快捷键(最全)
    加密算法IV的作用
    Hadoop环境常用命令
    Centos网络配置
    apache指定的网络名不再可用
    Toritoisegit记住用户名密码
    用JavaScript修改CSS属性的代码
    div 旋转
    过滤器、监听器、拦截器的区别
  • 原文地址:https://www.cnblogs.com/jenrrychen/p/4974881.html
Copyright © 2011-2022 走看看