Delphi中字符串比較大小 VS Oracle-SQL中字符串比較大小

重點注意Delphi和Oracle-SQL中比較字符串時空字符串''的根本性的不一樣數據庫

Delphi中的字符串比較

  • Delphi中字符串比較大小的規則:對應位置的字符按照字符編碼值逐個對比,直到遇到能夠肯定大小關係的就結束比較編程

  • 參考《Delphi的Ord函數和ASCII碼對照表》函數

  • 常見的一些字符的字符編碼編碼

    • '0'對應字符編碼48;'1'對應字符編碼49。'2'、'3'、……、'9'依次遞增code

    • 'A'對應字符編碼65。'B'、'C'、……'Y'、'Z'依次遞增orm

    • 'a'對應字符編碼97。'b'、'c'、……'y'、'z'依次遞增ci

    • ' '對應字符編碼32,注意是空格,而不是空字符串字符串

  • 好比'abcd' 和 'abd'比較get

    • 首先第一位'a'和'a'比較,同樣,繼續下面的比較it

    • 接着第二位'b'和'b'比較,同樣,繼續下面的比較

    • 接着第三位'c'和'd'比較,'c'<'d',因此'abcd'<'abd',結果出來!比較結束

  • 列舉出常見的比較

    • '101'<'12'爲True

    • '101'<'102'爲True

    • 'abcd'>'abc'爲True,這個須要注意

    • '12345'>'1234'爲True,這個須要注意

    • '1'>'',在Delphi中任意非空字符串都大於空字符串''

能夠本身在Delphi中編程試一下

procedure TForm1.btn1Click(Sender: TObject);
begin
//這裏面的四種比較都是True,因此都會彈出框
  if '123'>'12' then
    ShowMessage(' ''123''>''12'' ');
  if 'abcd'>'abc' then
    ShowMessage(' ''abcd''>''abc'' ');
  if '1'>'' then
    ShowMessage(' ''1''>'''' ');
  if '102'>'10' then
    ShowMessage(' ''102''>''10'' ');
end;

Oracle SQL中的字符串比較

  • 親自在Oracle中驗證過!

  • 通常在SQL中的where條件中會用到字符串的比較,好比select * from user where name > 'john'

  • 首先特別注意'',和Delphi有一個很大的不一樣

    • 任何字符串都不能和''進行比較,由於比較結果既不爲True也不爲False

    • 若是在select的where判斷中有和''的比較會致使選不出任何一條記錄

  • 除了當心''以外,其他同Delphi:對應位置的字符按照字符編碼值逐個對比,直到遇到能夠肯定大小關係的就結束比較

  • 幾種常見的字符對應的編碼

    • select ascii('1') from dual; 字符編碼值 49

    • select ascii('A') from dual; 字符編碼值 65

    • select ascii('a') from dual; 字符編碼值 97

    • select ascii(' ') from dual; 字符編碼值 32

  • 列舉出常見的比較

    • 'abcd'>'abc'爲True,和Delphi中同樣

    • '12345'>'1234'爲True,和Delphi中同樣

  • 其餘的數據庫的相關規則目前尚未試過,好比MySQL、SQLite……

相關文章
相關標籤/搜索