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

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

  • 相关阅读:
    Django进阶2
    Django进阶
    Django基础
    jQuery基本操作
    Dom编程
    JavaScript简介
    Python—sqlalchemy
    Python—RabbitMQ
    Python—redis
    Python—操作redis
  • 原文地址:https://www.cnblogs.com/jenrrychen/p/4974881.html
Copyright © 2011-2022 走看看