首页 > 解决方案 > 解释 SQL Server 中尾随空格的位置和不被忽略的位置

问题描述

我相信在 SQL 中到处都会忽略尾随空格,直到我遇到 PATINDEX 没有忽略它们的场景。

情况 1:SELECT PATINDEX('qwerty', 'qwerty')返回 1。
情况 2:SELECT PATINDEX('qwerty', 'qwerty ')返回 1。在第二个字符串末尾插入的尾随空格被忽略。
情况 3:SELECT PATINDEX('qwerty ', 'qwerty')返回 0。

为什么它没有像案例 2 一样忽略插入在第一个字符串末尾的尾随空格?

标签: sql-serverstringtsqlpatindextrailing-whitespace

解决方案


我相信在 SQL 中到处都忽略尾随空格

不,他们不是。仅出于比较目的而忽略它们,仅此而已。所以'mystring 'and'mystring'将在子句中被同样对待WHERE 'mystring' = 'mystring '

但是,它们不是在使用PATINDEX.

请注意,LEN函数中记录了尾随空格也被忽略。DATALENGTH另一方面,包括他们。


推荐阅读