sql的轉義字元單引號

2022-08-24 21:57:07 字數 2270 閱讀 4398

在sql中,我們都知道單引號 ' 表示字串的開始和結束符號,如:

select

*from students where name ='小明

';

但如果字串裡面有單引號時,應該怎麼查詢呢?

這是我最近遇到的乙個問題,需求是對一張表的資料進行更新,但各個環境的資料並不一致,只能通過拼接的方式生成適合對應環境的變更指令碼。更新語句格式如下:

1

update students set grade =

'一年級

'where grade_id ='01

'and grade is

null;2

update students set grade =

'二年級

'where grade_id ='02

'and grade is

null;3

...4

--只是舉例,實際就是各個環境字段值不一致,需要先根據環境拼接變更指令碼

拼接sql語句的指令碼初始如下:

--

db2資料庫使用下面的語句

select

'update students set grade =

'|| grade ||

' where grade_id =

'|| grade_id ||

' and grade is null;

'from

classes

where grade_id in (select grade_id from students where grade_id is

notnull

and grade is

null

);--

mysql資料庫使用下面的語句

select concat('

update students set grade =

',grade,'

where grade_id =

',grade_id,'

and grade is null;

') from

classes

where grade_id in (select grade_id from students where grade_id is

notnull

and grade is

null);

結果如下:

可以發現,字串值沒有單引號,直接執行會報錯。google後找到解決辦法。sql單引號

sql的轉義字元單引號 ' ,可以對字串中的單引號進行轉義,使其表示字串值 ' ,這樣如果要查詢 name 為 小'明 的值,其sql語句如下:

select

*from students where name ='小

''明';

所以上面的拼接指令碼修改如下,即可生成正確的update語句。

1

--db2資料庫使用下面的語句

2select

'update students set grade =

'''|| grade ||

'''where grade_id =

'''|| grade_id ||

'''and grade is null;

'from

classes

3where grade_id in (select grade_id from students where grade_id is

notnull

and grade is

null);4

5--mysql資料庫使用下面的語句

6select concat('

update students set grade =

''',grade,'''

where grade_id =

''',grade_id,'''

and grade is null;

') from

classes

7where grade_id in (select grade_id from students where grade_id is

notnull

and grade is

null);8

9--注意三個逗號需連續,且與其他字元間的空格

SQL 轉義字元 單引號

c 的轉義字元是 sql 的轉義字元是 單引號 例 select from tbl where uyear 06 請注意其中紅色背景的單引號,它即表示轉義字元,如果我們省略,則整個語句會出錯,轉義字元不會輸出,上例中 uyear 的實際條件值為 06,而不是 06 為什麼不能省略呢,假如我們省略,上...

SQL 轉義字元 單引號

c 的轉義字元是 sql 的轉義字元是 單引號 例 select from tbl where uyear 06 請注意其中紅色背景的單引號,它即表示轉義字元,如果我們省略,則整個語句會出錯,轉義字元不會輸出,上例中 uyear 的實際條件值為 06,而不是 06 為什麼不能省略呢,假如我們省略,上...

SQL中單引號轉義

sql 的轉義字元是 單引號 例 select from tbl where uyear 06 請注意其中紅色背景的單引號,它即表示轉義字元,如果我們省略,則整個語句會出錯,轉義字元不會輸出,上例中 uyear 的實際條件值為 06,而不是 06 為什麼不能省略呢,假如我們省略,上句變成 selec...