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

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

  • 相关阅读:
    [Tyvj模拟赛]运
    [NOIP 2011]聪明的质监员
    暑假集训D10总结
    暑假集训D9总结
    [POI2008]枪战Maf
    [Usaco2007 Open]Fliptile 翻格子游戏
    [bzoj1592] Making the Grade
    学生信息管理系统(增删改查)【代码不完整】
    《程序员修炼之道》第五次读后感
    《程序员修炼之道》第四次读后感
  • 原文地址:https://www.cnblogs.com/jenrrychen/p/4974881.html
Copyright © 2011-2022 走看看