2014-09-27 68 views
13

我是學習SQL的新手。SQL字符串比較,大於和小於運算符

我對某件事情有疑問。

今天我查看了一些查詢示例,並在WHERE條件中發現了一些字符串比較。

使用大於(>)和小於(<)符號進行比較,這是比較SQL中字符串的一種可能方法嗎?它是如何行事的?一個比另一個更少的字符串以字典順序出現?例如,球比水少?這種比較是區分大小寫的?例如BALL <水,大寫字母確實影響這些比較?

我已經搜索了好幾個小時,但我沒能找到任何可以讓我解開這些疑問的東西。

+0

SQL是不區分大小寫和'<>'作用完全一樣' !=' – Pierre 2014-09-27 23:40:49

+4

創建一個表,添加所有的字母,然後像aa,aaa,abc這樣的字符串,然後使用order by發出查詢,您將學到很多東西。區分大小寫取決於您使用的歸類,默認歸類不區分大小寫,但有特殊的歸類區分大小寫。 – 2014-09-27 23:41:31

+1

sql server不區分大小寫。大多數其他數據庫引擎不是。 – 2014-09-27 23:41:44

回答

16

比較運算符(包括<>)「工作」與字符串值以及數字。

對於MySQL

「默認情況下,字符串比較不區分大小寫,並使用當前的字符集,默認爲latin1(CP1252西歐),這也是行之有效的英語。」

如果要比較的字符串的字符集排序規則區分大小寫,即字符集的名稱結尾爲_cs而不是_ci,則字符串比較將區分大小寫。在這裏重複MySQL參考手冊中提供的所有信息是毫無意義的。

MySQL的比較操作參考:
http://dev.mysql.com/doc/refman/5.5/en/comparison-operators.html

更多關於MySQL charactersets /歸類的信息:
http://dev.mysql.com/doc/refman/5.5/en/charset.html


要回答你問的具體問題:

問:是這個一種可能的方法來比較SQL中的字符串?

答:是,MySQL和SQL服務器


的Q:,它是如何行動?

答:比較運算符返回一個布爾值,TRUE,FALSE或NULL。


問:一個字符串小於另一個人來之前在字典順序?例如,球比水少?

答:是的,因爲 'B' 來之前, 'W' 在characteset整理,表達

'ball' < 'water' 

將返回TRUE。 (這依賴於字符集並在覈對


問:和該比較是大小寫敏感

?A:是否一個特定的比較是大小寫敏感或不取決於數據庫服務器;默認情況下,SQL Server和MySQL都不區分大小寫。

在MySQL中,可以進行字符串比較通過指定一個字符集,排序規則是大小寫敏感的(該字符集的名稱將在_cs而非_CI結束)


問:例如BALL <水,上殼體字符不影響這些比較?

答:默認情況下,SQL Server和MySQL中,表達

'BALL' < 'water' 

會返回TRUE。

6

在Microsoft SQL Server,整理確定字典的規則與問候比較和排序的字符數據:

  • 大小寫
  • 重音靈敏度
  • 寬度靈敏度
  • 假名靈敏度

SQL Server還包括進行比較和排序的二進制排序規則通過二進制代碼點而不是字典規則。一旦根據所需的敏感度行爲可以從許多排序規則中進行選擇。在SQL安裝過程中爲基於拉丁語的語言環境選擇的默認排序規則不區分大小寫和區分重音。

排序規則在實例(安裝期間),數據庫和列級別指定。實例歸類確定實例級別對象(如登錄名和數據庫名稱)的歸類以及變量,GOTO標籤和臨時表的標識符。數據庫排序規則(默認情況下與實例排序規則相同)確定數據庫標識符(如表和列名稱)以及文字表達式的排序規則。列歸類(默認情況下與數據庫歸類相同)確定該列的歸類。

這當然是可能比較使用 '<' '<>' 字符串, '>',,,LIKE,BETWEEN等

相關問題