在MySQL concat里面使用多個(gè)單引號(hào),三引號(hào)的問(wèn)題
在動(dòng)態(tài)拼接字符串時(shí),我們常會(huì)用到字符拼接,我對(duì)拼接的引號(hào)不理解,如:
1、'''+ id +''' 為什么是3個(gè)引號(hào),為什么左邊一個(gè)加號(hào)右邊一個(gè)加號(hào)(能不能著重幫我解釋下這個(gè),詳細(xì)點(diǎn))
SQL code
sum(case Leave when '''+ id +''' then DaysNo else 0 end) ['+ name +']'
正常語(yǔ)句:
SQL code
SUM(CASE Leave WHEN '01' THEN DaysNo END) AS [事假],
SUM(CASE Leave WHEN '02' THEN DaysNo END) AS [病假]
簡(jiǎn)答:
簡(jiǎn)單的來(lái)說(shuō)一般單引號(hào)是拼接語(yǔ)句用的,3個(gè)引號(hào)拼接是字符串變量值。
因?yàn)橐?hào)是有特殊含義的,所以要寫2次,進(jìn)行轉(zhuǎn)義
2、字符串單引號(hào)和雙引號(hào)有區(qū)別嗎?
簡(jiǎn)單來(lái)說(shuō),如果是正常使用就單引號(hào),,如果你在單引號(hào)里面還要使用單引號(hào) 。那么就要額外增加一個(gè)單引號(hào)(轉(zhuǎn)義使用),變成3個(gè)單引號(hào)。
在標(biāo)準(zhǔn) SQL 中,字符串使用的是單引號(hào)。
如果字符串本身也包括單引號(hào),使用兩個(gè)單引號(hào)(注意,不是雙引號(hào),字符串中的雙引號(hào)不需要另外轉(zhuǎn)義)。
MySQL對(duì) SQL 的擴(kuò)展,允許使用單引號(hào)和雙引號(hào)兩種。
簡(jiǎn)單總結(jié):
通過(guò)concat拼字符串的時(shí)候,如果語(yǔ)句里面需要使用單引號(hào),可以使用兩個(gè)單引號(hào)來(lái)代替一個(gè)引號(hào)
mysql> select concat('drop user ''''@', '''', @@hostname, ''''); +----------------------------------------------------+ | concat('drop user ''''@', '''', @@hostname, '''') | +----------------------------------------------------+ | drop user ''@'bei-f0q5bc2.gemalto.com' | +----------------------------------------------------+ 1 row in set (0.00 sec)
補(bǔ)充拓展:mysql插入字符串帶單引號(hào)+雙引號(hào)
如下所示:
String needInsertStr= 單雙引號(hào)的字符串; String finalStr = needInsertStr.replaceAll("'", "\\\\\'"); //作用等于在單引號(hào)前面加上轉(zhuǎn)義符號(hào)\ //對(duì)于其他特殊字符也是一樣 long dateMillions = System.currentTimeMillis(); StringBuilder stringBuilder = new StringBuilder(); stringBuilder.append("insert into "); stringBuilder.append(tableName); stringBuilder.append("(uuid,name,metric_id,service_id,script,deleted,created,updated) "); stringBuilder.append("values(uuid(),'"); stringBuilder.append(name); stringBuilder.append("','"); stringBuilder.append(name); stringBuilder.append("','"); stringBuilder.append(serviceId); stringBuilder.append("','"); stringBuilder.append(finalStr); stringBuilder.append("',0,"); stringBuilder.append(dateMillions); stringBuilder.append(","); stringBuilder.append(dateMillions); stringBuilder.append(")"); return stringBuilder.toString(); // script字段即是帶單雙引號(hào)的字符串
insert into table(string) values(' “這是測(cè)試語(yǔ)句”+\'測(cè)試單雙引號(hào)\' ‘)
以上這篇在MySQL concat里面使用多個(gè)單引號(hào),三引號(hào)的問(wèn)題就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- MySQL中因一個(gè)雙引號(hào)錯(cuò)位引發(fā)的血案詳析
- Mysql插入帶有引號(hào)的字符串?dāng)?shù)據(jù)最佳實(shí)踐
- MySQL中的引號(hào)和反引號(hào)的區(qū)別與用法詳解
- 解決python3插入mysql時(shí)內(nèi)容帶有引號(hào)的問(wèn)題
- mysql語(yǔ)句如何插入含單引號(hào)或反斜杠的值詳解
- python實(shí)現(xiàn)mysql的單引號(hào)字符串過(guò)濾方法
- 關(guān)于Mysql查詢帶單引號(hào)及插入帶單引號(hào)字符串問(wèn)題
- mysql語(yǔ)法時(shí)采用了雙引號(hào)““的錯(cuò)誤問(wèn)題
相關(guān)文章
Mysql如何在linux中實(shí)現(xiàn)定時(shí)備份
這篇文章主要介紹了Mysql如何在linux中實(shí)現(xiàn)定時(shí)備份,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09MySQL使用Partition功能實(shí)現(xiàn)水平分區(qū)的策略
這篇文章主要介紹了MySQL使用Partition功能實(shí)現(xiàn)水平分區(qū),給大家提到了水平分區(qū)的5種策略,通過(guò)sql語(yǔ)句給大家介紹的非常詳細(xì),需要的朋友可以參考下2021-12-12mysql5.7 設(shè)置遠(yuǎn)程訪問(wèn)的實(shí)現(xiàn)
這篇文章主要介紹了mysql5.7 設(shè)置遠(yuǎn)程訪問(wèn)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02關(guān)于MySQL Memory存儲(chǔ)引擎的相關(guān)知識(shí)
這篇文章主要介紹了關(guān)于MySQL Memory存儲(chǔ)引擎的相關(guān)知識(shí),幫助大家更好的理解和使用MySQL數(shù)據(jù)庫(kù),感興趣的朋友可以了解下2020-11-11MySQL之union和union all的使用及區(qū)別說(shuō)明
這篇文章主要介紹了MySQL之union和union all的使用及區(qū)別說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-04-04基于JPQL實(shí)現(xiàn)純SQL語(yǔ)句方法詳解
這篇文章主要介紹了基于JPQL實(shí)現(xiàn)純SQL語(yǔ)句方法詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09