SQL Server 字串對比

2022-02-15 02:40:09 字數 1574 閱讀 9627

今天同事問我關於sql server在字串尾隨著空格時進行字串對比的做法。關於這個問題正好在這裡講一下,就是sql server是按照ansi/iso sql-92中的定義做字串對比的。

在kb316626中已經做了闡述,就是sql server對待這種有尾隨空格的字元是會做自動截斷尾隨空格再對比的。

這裡做個實驗吧

select

*from

(select'a

' a union

allselect'a

'union

allselect

'a

'union

allselect

'a

') a

where a ='a

'select a, count(*) from

(select'a

' a union

allselect'a

'union

allselect

'a

'union

allselect

'a

') a

groupbya

select a from

(select'a

' a union

allselect'a

'union

allselect

'a

'union

allselect

'a

') a

where a like

'a %

'

上面這段**會返回下面的結果

可以看到sql server在做字串對比和排序(其實排序也需要做字串對比)是會截斷尾隨空格的,而在做like匹配的時候則例外。

那如果是空格開頭呢?這個肯定是沒有截斷起始空格的。再做乙個實驗。

select

*from

(select'a

' a union

allselect'a

'union

allselect

'a

') a

where a ='a

'select a, count(*) from

(select'a

' a union

allselect'a

'union

allselect

'a

'union

allselect

'a

') a

group

by a

上面這段**會返回下面的結果

字串對比

字串對比 vip 問題描述 給定兩個僅由大寫字母或小寫字母組成的字串 長度介於1到10之間 它們之間的關係是以下4中情況之一 1 兩個字串長度不等。比如 beijing 和 hebei 2 兩個字串不僅長度相等,而且相應位置上的字元完全一致 區分大小寫 比如 beijing 和 beijing 3 ...

字串對比

問題描述 給定兩個僅由大寫字母或小寫字母組成的字串 長度介於1到10之間 它們之間的關係是以下4中情況之一 1 兩個字串長度不等。比如 beijing和 hebei 2 兩個字串不僅長度相等,而且相應位置上的字元完全一致 區分大小寫 比如beijing 和 beijing 3 兩個字串長度相等,相應...

字串對比

題目內容 題目說起來很簡單,你會讀到兩個字串,每個字串佔據一行,每個字串的長度均小於10000字元,而且第乙個字串的長度小於第二個字串的。你的程式要找出第乙個字串在第二個字串中出現的位置,輸出這些位置,如果找不到,則輸出 1。注意,第乙個字元的位置是0。注意,第乙個字串在第二個字串中的位置可能不止一...