淺用mysql比較函式

2021-05-28 12:24:30 字數 1584 閱讀 1838

今天在運算元據庫時,遇到乙個問題:修改表中某條資料,比較某個字段原有值和修改值,如果原有值大於修改值,則這個欄位不修改,從而引出了是用mysql的比較函式;

舉個例子,我現在有乙個users表,其中字段分別為id,name,age,***,id是key。

表中原有資料如下:

+----+------+------+------+

| id | name | age  | ***  |

+----+------+------+------+

| 16 | yang | 5      | s     |

| 17 | hang | 4      | m    |

我想修改id=16的使用者的年齡,如果要現今age的值是大於插入資料的值,則不修改。這時我們可以使用mysql的比較函式greatest函式,sql語句為:「 update users set age=greatest(age,10) where id=16」,修改後資料表如下:

+----+------+------+------+

| id | name | age  | ***  |

+----+------+------+------+

| 16 | yang | 10   | s    |

| 17 | hang | 4    | m    |

如果使用on duplicate key update也是能執行的。如 insert into users (id,name,age,***)  values(16,'tang',12,***='f') on duplicate key update name='tang',age=greatest(age,16),***='f';

這句語句是向表中插入資料,如果已存在此key,則修改這條資料(on duplicate key update的用法),執行結果如下:

+----+------+------+------+

| id | name | age  | ***  |

| 16 | tang | 16   | f      |

| 17 | hang | 4    | m    |

同理select中也是可以用的。此外比較函式還有least。

來自mysql文件中的說明:

greatest

(value1,value2,...)

當有2或多個引數時,返回值為最大(最大值的)

引數。

least(value1,value2,...)

在有兩個或多個引數的情況下, 返回值為最小(最小值)

引數。

用一下規則將自變數進行對比:

假如任意乙個自變數為null,則greatest()和least()的返回值為null 。

mysql>select least(2,0);

-> 0

mysql>select least(34.0,3.0,5.0,767.0);

-> 3.0

mysql>select least('b','a','c');

-> 'a'

暫時用到這麼多,後面用上繼續補上。

mysql 比較函式淺用

今天在運算元據庫時,遇到乙個問題 修改表中某條資料,比較某個字段原有值和修改值,如果原有值大於修改值,則這個欄位不修改,從而引出了是用mysql的比較函式 舉個例子,我現在有乙個users表,其中字段分別為id,name,age,id是key。表中原有資料如下 id name age 16 yang...

mysql比較函式 mysql 比較函式和操作符

mysql之中的比較函式和操作符 1 not between and check whether a value is within a range of values 說明 expr between min and max 如果expr大於或等於表示式是否小於或等於最大和最小之間,返回1,否則返回...

Oracle函式和mysql函式比較

1.oracle中的to number 轉換成數字 oracle select to number 123 from dual 123 select to char 33 from dual 33 mysql select conv 123 10,10 123 select cast 123 as ...