MySQL 中 關於 find in set 用法

2022-01-23 11:27:37 字數 456 閱讀 2784

在專案中用的是 ef、mysql,在查詢中用到某乙個欄位的值在某幾個中。一開始想到的是 in。

但是,這個欄位是 int 型別的,傳入的引數需要用「,」分隔。這樣傳入的就是字元型的。

這樣的結果是:本來是 in (1,2,3),這樣傳參變成 in (『1,2,3』)和預期的不一樣。

為了防止sql語句的注入,沒有使用拼接語句。找了半天發現 find_in_set 這個函式可以達到效果。

來舉結果例子:

select * from table_name t where find_in_set(t.field1,'1,2,3,4'); 

select * from `test` t where find_in_set('daodao',t.field1);

這兩個都可以。第乙個引數是要查詢的目標,第二個引數是查詢的源。

有一點,find_in_set 相對於 in 效率上面要差。

mysql中關於事務

db starttrans 啟動事務 try catch pdoexception e db rollback 回滾事務 mysql事務隔離級別有四個 1.讀未提交,有兩個事務 事務a與事務b,事務a裡面更新了一條記錄並且未提交,事務b可以讀取到事務a未提交的更改,一般不用,如果事務b使用了事務a未...

關於mysql中 主鍵 pri mul

1.如果key是空的,那麼該列值的可以重複,表示該列沒有索引,或者是乙個非唯一的復合索引的非前導列 2.如果key是pri,那麼該列是主鍵的組成部分 3.如果key是uni,那麼該列是乙個唯一值索引的第一列 前導列 並別不能含有空值 null 4.如果key是mul,那麼該列的值可以重複,該列是乙個...

關於MySQL中的死鎖

死鎖分為兩種情況,一種是死鎖,一種是鎖等待,通常我們說的mysql 死鎖 指的是鎖等待 事務1鎖定記錄a 事務2鎖定記錄b 事務1嘗試更新記錄b 這裡是鎖等待,等待事務2提交,釋放b 事務2嘗試更新記錄a 這裡是死鎖,mysql會自動檢測,並報error 1213 40001 deadlock fo...