asp,asp.net中關於雙引號和單引號的用法

來源:互聯網
上載者:User
關於&、雙引號、和單引號的解釋

 

下面先簡單地說一下他們的意義。
      (1)&是串連運算子,它可以將兩個字串串連成一個字串。如 
         a="abc" & "def" 
 執行串連運算後,a="abcdef"。再如
         a="abc" & temp
      注意,這裡temp是一個字串變數,假如temp="def",那麼代入上面的式子,則結果為:
         a="abc" & "def"
 繼續執行串連運算,結果a="abcdef"。有時候,可能會有多個串連運算子,只要依次運算即可。如
         a="abc" & "def" & "gh"
 結果為a="abcdefgh"。
   
    (2)關於雙引號"。字串兩邊一定要加雙引號,表示這是一個字串。如上面的"abc"、"def"、"gh"兩邊的雙引號就都是表示這是一個字串。
     當然,字串變數名稱兩邊不能再加雙引號了,如上面提到的a="abc" & temp 中的temp是變數,
所以兩邊不能加雙引號,如果給temp加上雙引號,那麼它就變成了一個字串常數"temp"了。
   
    (3)關於單引號'。為什麼會使用單引號呢?這是因為如果發生引號嵌套,內層的雙引號就要改為單引號。
      下面來看一個例子:
            a="字串兩邊要加英文雙引號,如"abc",或者……"
      大家看這句話,原來的意思是:最前面和最後面的"表示中間是一個字串。而"abc"兩邊的雙引號表示abc是一個字串。 可是這樣就會發生錯誤了。因為第1個雙引號實際上會和第2個雙引號配套,並不是和大家希望的第4個雙引號配套。
     那麼怎麼辦呢,此時就需要把內層的雙引號"abc"改為單引號,如下:
           a="字串兩邊要加英文雙引號,如'abc',或者……"
    下面要補充的是:
    1) 以上提到的符號都是英文狀態下的,屬於文法中會用到的符號。如果是中文狀態下的符號,就不需要這樣變化。如;
         a="小王說:“我們吃飯去吧”。"
其中的中文符號並不參與文法,所以不需要變化。
    2) 發生引號嵌套時,內層引號一般改為單引號,不過也可以改為兩個雙引號,如下:
       a="字串兩邊要加英文雙引號,如""abc"",或者……"   

 

 關於SQL語句中的雙引號、單引號和&

(1)先來看一個最簡單的SQL語句
           Insert Into users(username) values("小王")
     大家來看一下,這是一個標準的SQL語句,因為username是文本型欄位,所以欄位值兩邊要加雙引號,表示小王是一個字串。
    (2)可是在ASP中,我們通常這樣寫
           strSql="Insert Into users(username) values('小王')"
     此時,前後的雙引號表示中間是一個字串。而小王兩邊的單引號是因為發生了引號嵌套,所以內層引號該為了單引號。
    (3)實際插入時,因為小王通常是從表單中擷取的變數,不過因為變數不能直接寫入字串,必須通過串連符&和字串串連在一起,所以要寫成如下形式:
          myusername=Request.Form("username")
          ……
          strSql="Insert Into users(username) values('" & myusername & "')"
    很多人此時就糊塗了,為什麼其中又有單引號,又有雙引號啊。簡單的看上面的式子,其實是由如下三部分組成的:
          字串常數:"Insert Into users(username) values('"
          字串變數:myusername 
          字串常數:"')"
    直接理解上面的式子可能比較困難,現在我們變數myusername的值代入就能看清楚了。假如myusername="小王",代入:
          strSql="Insert Into users(username) values('" & "小王" & "')"
     然後依次執行其中的串連運算子,結果為:
          strSql="Insert Into users(username) values('小王')"
    這就是(2)中提到的正確的SQL語句。 到此就能看清楚了: 式子中第1、2個雙引號配套,表示這是一個字串。第3、4個雙引號配套,也表示是一個字串。而式子中的單引號就是文本型欄位值小王前後的單引號。
    (4)上面只有一個欄位,下面來看一個有兩個欄位的情況:
      strSql="Insert Into users(username,password)  values('" & myusername & "','" &
 mypassword & "')"
    其中 myusername 和mypassword 是變數。現在假如myusername="小王",mypassword="123456",代入其中,結果為:
      strSql="Insert Into users(username,password) values('" & "小王" & "','" & "123456" & "')" 
依次執行串連運算,結果為:
    strSql="Insert Into users(username,password) values('小王','123456')"    
    (5)文本型欄位值兩邊加引號,日期型兩邊加#,數字、邏輯兩邊什麼都不用加。如下面age是數字,submit_date是日期型。
      strSql="Insert Into users(username,password,age,submit_date) values('" & myusername & "','" & mypassword & "'," & myage & ",#" & mysubmit_date & "#)"  
    注意這雷根據欄位的類型兩邊加上相應的符號,或者不加。假如myusername="小王",mypassword ="123456",myage=20,mysubmit_date="2004-4-1",代入其中,結果為:
     strSql="Insert Into users(username,password,age,submit_date) values('" & 小王" & "','"    & "123456" & "'," & 20 & ",#" & "2004-4-1" & "#)" 
    這裡的20很特殊,運算時,首先會自動轉換為字串,因為這裡參與運算的都是字串。結果為:
     strSql="Insert Into users(username,password,age,submit_date) values('" & 小王" & "','" & "123456" & "'," & "20" & ",#" & "2004-4-1" & "#)"  
     依次執行串連運算,結果
 strSql="Insert Into users(username,password,age,submit_date) values ('小王','123456',20, #2004-4-1#)"   這正是我們需要的標準的SQL語句。

 

 

關於Insert字串

很多同學都在這個方面發生了問題,其實主要是因為資料類型和變數在作怪。下面我們就分別講述,雖然說的是Insert語句,但是Select、Update、Delete語句都是一樣的。假如有下述表格:
        mytabe
        欄位1   username     字串型(姓名)
        欄位2   age          數字型(年齡)
        欄位3   birthday     日期型(生日)
        欄位4   marry        布爾型(是否結婚,結婚為True,未結婚為False)
        欄位5   leixing      字串型(類型)
        
    1.插入字串型
    假如要插入一個名為張紅的人,因為是字串,所以Insert語句中名字兩邊要加單撇號,如:
        strsql=“Insert into mytable(username) values(‘張紅’)”
    如果現在姓名是一個變數thename,則寫成
        strsql=”Insert into mytable(username) values(‘” & thename & “’)”
    這裡Insert into mytable(username) values(‘是張紅前面的部分,thename是字串變數,’)是張紅後面的部分。將thename變數替換成張紅,再用&將三段串連起來,就變成了
        strsql=“Insert into mytable(username) values(‘張紅’)”。
    如果要插入兩個欄位,如姓名為“張紅”,類型為“學生”
        strsql=“Insert into mytable(username,leixing) values(‘張紅’,’學生’)”
    如果現在姓名是一個變數thename,類型也是一個變數thetype,則寫成:
        strsql=”Insert into mytable(username,leixing) values(‘”&thename&“,”&thetype &“’)”
    和第一個例子一樣,將thename和thetype替換後,再用串連符,就串連成和上面一樣的字串了。

2.插入數字型
    假如插入一個年齡為12的記錄,要注意數字不用加單撇號:
        strsql=“Insert into mytable(age) values(12)”
    如果現在年齡是一個變數theage,則為:
        strsql=“Insert into mytable(age) values(“ & theage & “)”
    這裡Insert into mytable(age) values(是12前面的部分,theage是年齡變數,)是12後面部分。將theage替換,再用&串連符將三部分串連起來,就變為了和上面一樣的字元。

3.插入日期型
    日期型和字串型類似,但是要將單撇號替換為#號。(不過,Access資料庫中用單撇號也可以)
        strsql=“Insert into mytable(birthday) values(#1980-10-1#)”
    如果換成日期變數thedate
        strsql=“Insert into mytable(birthday) values(#” & thedate & “#)”
        
    4.插入布爾型
    布爾型和數字型類似:只不過只有兩個值 True和False,如:
        strsql=“Insert into mytable(marry) values(True)”
    如果換成布爾變數themarry
        strsql=“Insert into mytable(birthday) values(” & themarry& “)”
    5.綜合樣本
    插入一個姓名為張紅,年齡為12,出生日期為1970-6-8的記錄
        strsql=“Insert into mytable(username,age,birthday) values(‘張紅’,12,#1970-6-8#)”
    仔細注意上式:因為姓名是字串,所以張紅兩邊加了單撇號;年齡是數字,所以沒有加單撇號。如果換成字串變數thename、數字變數theage和日期變數thebirthday,則變為:
        strsql=“Insert into mytable(username,age,birthday) values(‘”& thename &“’,”& theage&“,#”& thebirthday & “#)”
總之,替換變數,再串連後要完成和上邊一樣的字串。
       
    6.小竅門
   (1)插入字串型
    把下面的語句題換成變數的寫法:
        strsql=“Insert into mytable(username) values(‘張紅’)”
    第一步:先把張紅抹去,在原位置加兩個引號
        strsql=“Insert into mytable(username) values(‘”“’)”
    第二步:在中間添加兩個串連符&
        strsql=“Insert into mytable(username) values(‘”& &“’)”
    第三步:把變數寫在兩個串連符之間
        strsql=“Insert into mytable(username) values(‘”& thename &“’)”
  
   (2)插入數值/布爾型
    把下面的語句題換成變數的寫法:
        strsql=“Insert into mytable(age) values(12)”
    第一步:先把12抹去,在原位置加兩個引號
        strsql=“Insert into mytable(username) values(”“)”
    第二步:在中間添加兩個串連符&
        strsql=“Insert into mytable(username) values(”& &“)”
    第三步:把變數寫在兩個串連符之間
        strsql=“Insert into mytable(username) values(”& theage &“)”

(3)插入日期型
    把下面的語句題換成變數的寫法:
        strsql=“Insert into mytable(birthday) values(#1980-10-1#)”
    第一步:先把1980-10-1抹去,在原位置加兩個引號
        strsql=“Insert into mytable(username) values(#”“#)”
    第二步:在中間添加兩個串連符&
        strsql=“Insert into mytable(username) values(#”& &“#)”
    第三步:把變數寫在兩個串連符之間
        strsql=“Insert into mytable(username) values(#”& thedate &“#)”

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.