今天客戶那邊遇到了一個比較奇葩的問題跑來問我,這個問題比較冷門,所以特別記錄下。

問題描述

數(shù)據(jù)庫的字段存在斜杠或者空格的時候,怎么用sql進行insert或者select操作。

問題解答

對于這種特殊字符,我們一般想到的是用轉義符進行處理,所以試了下"/"、引號、單引號等常見的轉義符,發(fā)現(xiàn)依然語法錯誤,又查了下mysql的官方說明:

特殊字符位于列名中時必須進行轉義,如果列名中包含\t,(,),/,\,=,<,>,+,-,*,^,",',[,],~,#,|,&,% 則必須用中括號括起來。eg:列名為Column#,應寫為[Column#];列名包括中括號,必須使用斜杠進行轉義,eg:列名為Column[]的列應寫為[Column[\]](只有第二個中括號必須轉義)。

以中括號的形式進行轉義,然后又試了下中括號,發(fā)現(xiàn)依然還是不行。

通過搜索,最后找到需要以反引號“`”(一般鍵盤的左上角數(shù)字1左邊的那個鍵)來處理。

其它反引號的用法

之前對反引號幾乎沒有使用過,所以借此機會搜索總結了下反引號相關的用法。

Linux反引號的作用

特殊的賦值
Shell中可以將數(shù)字或字符直接賦予變量,也可以將Linux命令的執(zhí)行結果賦予變量,如下:

(1) $ count=9 #將數(shù)字賦予變量count

(2) $ name="ming" #將字符賦予變量name

(3) $ listc=`ls -la` #將Linux命令賦予listc,listc的值就是該命令的執(zhí)行結果

反引號的作用
反引號的作用就是將反引號內的Linux命令先執(zhí)行,然后將執(zhí)行結果賦予變量。盡管可以通過輸入字符或者字符串來創(chuàng)建變量值,也可以獲取來自于其他Linux命令的值。為把Linux命令的結果賦予變量,實現(xiàn)需要執(zhí)行這個命令。如果在命令行上把Linux命令放在反引號中,這個命令會首先被執(zhí)行,其結果會成為命令行的一個參數(shù)。在賦值時,通過把命令放在反引號中,以便于首先執(zhí)行,命令的執(zhí)行結果會被賦予一個變量。反引號可以被視為由要執(zhí)行命令組成的表達式,其結果會被賦予變量。組成命令的字符本身不會被賦予。在下面的范例中,命令ls .c被執(zhí)行,其結果然后被賦予變量listc。ls .c會生成具有.c擴展名的所有文件列表。這個文件列表隨后被賦予變量listc。

延伸閱讀

學習是年輕人改變自己的最好方式-Java培訓,做最負責任的教育,學習改變命運,軟件學習,再就業(yè),大學生如何就業(yè),幫大學生找到好工作,lphotoshop培訓,電腦培訓,電腦維修培訓,移動軟件開發(fā)培訓,網(wǎng)站設計培訓,網(wǎng)站建設培訓學習是年輕人改變自己的最好方式