比较规则
比較規則
=, EQ, <>, NE, <, LT, >, GT, <=, LE, >=, GE
非引用數據類型的兼容要求
l? 就基本類型來說,需要類型、長度(for the types c, n, p, x)、小數位(for the type p)匹配
l? 對于結構來說,要求必須具有相同的組成成份(組件聲明的順序與類型),并且相對應的組件必須是兼容的,與名稱沒有關系
l? 對于內表來說,行類型必須兼容,與內表的類型與關鍵字沒有關系。
兼容基本類型之間的比較
兼容類型數據之間的比較是不會發生類型轉換的:
- 數字類型 (i, f, p)之間的比較,會按照所存儲的數字值的大小進行比較。由于f類型依賴于平臺,會有誤差,不要對f類型進行相等相關的比較.
- 字符類型(c, d, n, t, string) 之間的比較,會從左到右逐個字符進行比較。如果兩個操作數都是n類型時,會轉換為對應數字后進行比較。
- 字節類型(x, xstring),之間的比較,會從左到右逐字節進行比較
非兼容基本類型之間的比較
如果不兼容的兩個基本類型數據之間進行比較,會根據以下規則進行轉換:
類型相同但長度不同之間的比較
- 如果操作數都是p,則會比較數字值的大小。
- 針對c類型的操作數,短操作數的長度會在右邊添加空格擴展到長的操作數同樣長度后再進行比較。
- 不同長度的string類型操作數通常是不相等的。
DATA: str1 TYPE string VALUE `AA`,
????? str2 TYPE string VALUE `AA `.str1會小于str2
但DATA: str1 TYPE string VALUE 'AA',
????? str2 TYPE string VALUE 'AA '.相等
- 針對n類型的兩個操作數,會在較短操作數左邊補上0直到與較長操作數長度相等。
- 針對x類型的兩個操作數,會在較短操作數左邊補上十六進制0直到與較長操作數長度相等。
- 不同長度的Xstring類型操作數通常是不相等的.
不同類型之間的比較
只有比較時才有以下的優先級,賦值轉換時不會存在這種優先級,因為賦值之前就已經確了目標類型,但比較時是要在運行時才能動態的決定,這種決定時就會用到下面的優先級規則
?
如果進行比較的操作數類型不同,則會先按照以下優先順序確定要轉換的類型,然后再根據基本類型轉換規則表進行轉換,最后再進行比較:
轉載于:https://www.cnblogs.com/jiangzhengjun/p/4293207.html
總結
 
                            
                        - 上一篇: MySQL知识总结(二)基本语句总结
- 下一篇: 高并发高可靠性系统思考1
