在使用sql語句的時候,我們經常會遇到使用字符串變量的時候,比如說,查詢,str:='select * from Table where Name='''+Name+'''';在.net里面使用sqlparameter,就不需要自己手動轉換了,但是在delphi中,好像是沒有那種用法,組織sql語句時,怎么把拼接的字符串轉成符合規范的sql語句,這就是個問題了。
就像上面寫那句一樣,我要想把name的值傳到sql語句中間,還要帶上單引號,形如str:='select * from Table where Name='JueJiang‘',就要考慮delphi中單引號的用法了。
首先,單引號必須是成對的,運行之后可能會出現’123''之類的情況,但是編譯期寫成str := '123''肯定是不行的。
第二,單引號的意義,成對的單引號,是標准的字符串賦值格式。在成對單引號之間的單引號,每兩個相當於一個轉換之后的單引號字符。還是舉個例子說明一下吧。
str := ''''; str1 := '123'''; str2 := '123'+''; -------------------------------------
顯示結果:
str:' str1:123' str2:123
去掉指定字符串格式的兩個單引號,中間的部分,兩個單引號代表一個'字符,加號運算符的效果相當於去掉中間的兩個單引號。
使用變量也是一樣:
str3 := '123'+Name; str4 := '123'''+Name; str5 := '123'''+Name+''; str6 := '123'''+Name+''''; ------------------------------------- 顯示結果: str3:123456 str4:123'456 str5:123'456 str6:123'456'
通常sql語句中的拼接用的都是最后的一種情況。
補充一下,雙引號,在delphi沒有什么特殊的含義,就是普通的字符
str7 := '"123"'; ------------------------------------- 顯示結果: str7:"123"
最后,還有sql語句的換行,換行就相當於是兩個字符串的拼接了,需要使用加號連接起來。
str:='select * from Table '+ 'where Name='''+Name+'''';
