W3Cschool
恭喜您成為首批注冊用戶
獲得88經驗值獎勵
字符數據是根據字符值大小比較的,而字符值則根據以下兩種度量進行比較:
在默認的二進制比較中,OceanBase 根據數據庫字符集中字符的數字代碼的級聯值比較字符串。如果一個字符在字符集中的數值大于另一個,則該字符更大。OceanBase 不支持 ASCII 字符集和 EBCDIC 字符集。
在語言排序中,SQL 排序和比較都按照 ?NLS_SORT
? 指定的語言規(guī)則。若字符編碼的二進制序列與字符集要求的語言序列不匹配,則使用語言比較。若 ?NLS_SORT
? 參數的設置不是 ?BINARY
?,且 ?NLS_COMP
? 參數設置為 ?LINGUISTIC
?,則使用語言比較。
使用空白填充語義,若兩個值的長度不同,則 OceanBase 首先將空格添加到較短的空格的末尾,以便它們的長度相等。然后,OceanBase 逐個字符地比較值,直到第一個不同的字符為止。在第一個不同位置具有較大字符的值被認為較大。如果兩個值沒有不同的字符,則認為它們相等。此規(guī)則意味著兩個值僅在尾隨空白數上不同時相等。
注意
只有當比較中的兩個值都是數據類型 CHAR、NCHAR、文本文字或 USER 函數返回的值時,OceanBase 就會使用空白填充的比較語義。
使用非填充語義,OceanBase 逐個字符地比較兩個值,直到第一個不同的字符為止。該位置上具有較大字符的值被認為較大。如果兩個不同長度的值在較短的值之前一直相同,則較長的值被認為較大。如果兩個長度相等的值沒有不同的字符,則認為這些值相等。
注意
只要比較中的一個或兩個值的數據類型為 ?VARCHAR2
? 或 ?NVARCHAR
?2,OceanBase 就會使用非填充比較語義。
使用不同的比較語義比較兩個字符值的結果不同。本示例顯示了使用空白填充語義和非填充語義比較。
空白填充 |
非填充 |
---|---|
'ac' > 'ab' |
'ac' > 'ab' |
'ab' > 'a ' |
'ab' > 'a ' |
'ab' > 'a' |
'ab' > 'a' |
'ab' = 'ab' |
'ab' = 'ab' |
'ac' > 'ab' |
'ac' > 'ab' |
'a ' = 'a' |
'a ' > 'a' |
通常,空白填充和非填充比較的結果是相同的。而最后一行的比較示例說明了空白填充和非填充比較語義之間的區(qū)別。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯系方式:
更多建議: