1. 程式人生 > >sql語句中的單雙引號

sql語句中的單雙引號

txtSQL = "select * from Line_Info where id = '" & Trim(txt1.Text) & "'"

    有誰還記得這個sql語句中的''與""以及各個空格之間的關係嗎?今天被問到了同樣的問題,害怕理解有偏差,而且確實也挺模糊的,總歸之前欠下的債還是要還回來啊。

    讓我欣慰的是,當年令人頭疼的字串拼接問題終於找到了正解,看來凡事不能將就啊。記得在自己敲學生的時候就有跟同學討論過這個問題,關於sql語句的拼接以及單引號‘’和雙引號"",到底怎麼解釋。當時每個人都有每個人的理解,我也固執的按著自己的理解開始了接下來的學習任務,畢竟語句就是那個語句,格式深深記在了自己的腦子裡,照著葫蘆畫瓢的事情誰不會幹。殊不知自己的理解又一次在今天遭到了質疑,儘管請教了兩位同學,但兩位同學的理解與自己的理解偏差不大,仍保留著部分疑問未解決。有句話叫做:不將就。是的,有疑問的地兒是不能放過的,關鍵是自己還要給別人解釋呢,不能弄個錯誤的理解解釋給別人聽吧。

    接下來就讓我們一起看看讓人頭暈的符號吧!

    首先我們知道這是一個常用的sql語句。

    接下來就是將sql語句進行拆解:

    變數名:txtSQL

    表示式:"select * from Line_Info where id = '" & Trim(txt1.Text) & "'"

    繼續拆表示式中的各個元素:(需要宣告的是:" "之中是字串," " 和 " "之間用&連線

    元素1:  字串     select * from Line_Info where id = '

    元素2:  運算子     字串連線符(&

--用於連線前後兩個字串,注意&就相當於一個斷點,所以它前後的引號肯定不會是一對)

    元素3:  控制元件屬性   Trim(txt1.Text)(其返回值就是一個字串型別,trim是將其中的空格去掉,以和資料庫中的資料格式匹配)(因為Trim(txt1.Text)是一個變數,如果直接寫在" " 中是取不到它的值的,所以必須截斷字串,將變數拼接進去)

    元素4:  運算子     字串連線符(&--用於連線前後兩個字串)

    元素5:  字串    '

    經過這樣一拆分,想必大家也能很快的明白整條語句是怎麼連線在一起的了。其實我們在資料庫中執行的語句很簡單,只需把查詢條件寫清楚即可:select * from Line_Info where id = '1',直接執行就可得到結果。只不過在VB窗體中需要先定義好變數,並通過自定義函式ExecuteSql,來執行Sql語句,set mrc=ExecuteSql(txtSQL,MsgText) 其中txtSQL和MsgText是兩個引數,txtSQL是指上邊用來執行的Sql語句:select * from Line_Info where ....     MsgText則是指執行完Sql語句後的彈出框提示。

    針對上邊的語句還有一個問題就是:' ' 與 " " 括的內容分別是什麼?

    ' ' 內是輸入sql中的查詢資訊的, " " 是來輸入的字串,簡單來說,單引號是給sql語句使用的,而雙引號是給VB使用的。

             select * from Line_Info where id = '1'至於資料庫中執行這句話時什麼情況加' '什麼時候不加,就要看查詢的資料型別了。

    字元常量:通常一個字元常量代表ASCII字符集中的一個字元,在程式中用單引號' '把一個字元括起來作為字元常量。大小寫字母代表不同的字元常量;單引號中的空格也是;字元常量只能包含一個字元,且只能用單引號括起來。如'A'、'x'、'D'、 '?'、'3'、'X'等都是字元常量。對於字元來說,'x'和'X'是兩個不同的字元。
    特點:
    1.字元常量只能用單引號括起來,不能用雙引號或其它括號。
    2.字元常量只能是單個字元,不能是字串。
    3.字元可以是字符集中任意字元。但數字被定義為字元型之後就不能參與數值運算。如'5'和5 是不同的。'5'是字元常量,不能參與運算
    字串常量:字串常量是用雙引號括起來的,在C語言中系統會在每個字串的最後自動加入一個'\0'作為字串的結束標誌。語言是相通的。
     
    區別:'Z'是字元常量,佔一個位元組;"Z"是字串常量,佔兩個位元組,其中一個放'\0'。
    它們兩個的用法都明白了,區別就知道了  
        
    終於解決了當年的未解之謎,心情頓時開闊了不少 哈哈哈~  在此還要感謝問我和我問過的同學們,讓我對知識加深了理解,也體會到對知識不能過於將就,多討論,多探究!