1樓:
引號中的內容為字串,可以是數值,也可以是字元
沒有引號的數字為表示為資料值(這裡是整型數值),字元一般表示為欄位名。
儘管這樣,系統會自動先進行一致性轉換,再進行比較,所以,如果你的sno是數值型,兩個查詢都不會報錯,也會查詢出想要的結果。但如果sno是字元型,第一個查詢就有可能報錯,這要看sno的資料中的字串是否均為數字。如果有字元型字串,就會報錯。
為什麼會這樣呢?這就要了解系統內部的查詢過程:
select * from student where sno = 100 在查詢時,比較的過程是,提取每一個sno,如果是整型或數值型,則不轉換,如果是字元型,則要將sno轉換為數值型再比較。這樣,如果sno存有含字元的資料,如'111a',轉換時就會報告資料型別錯誤。
而select * from student where sno='100' ,如果sno是整型,就會將'100'先轉換為整型再與sno進行比較,如果是字元型,就直接與sno進行比較。
2樓:匿名使用者
對於數字來說,不加引號就代表數字,加了代表字元,就猶如abc這種
而對於非數字來說,不加引號就代表物件,如表名、列名、儲存過程名等
像你的例子,都能查詢到資料,那是因為發生了資料型別的隱式轉換,資料型別比較一定會都轉換為同一型別才做比較的
3樓:匿名使用者
本來是數值型的不加單引號,字元型的需要加單引號,但是如果sno欄位是數值型,加不加單引號都可以查詢出結果,但如果sno欄位是字元型,那麼一定要加單引號
4樓:匿名使用者
加 引號 是字串,不加是 數字
5樓:匿名使用者
int 和 string 的區別 一個是數一個是字串
c語言中函式名前加與不加有什麼區別
加 是返回指標 例如 int add add 函式返回的是一個int型別的值 int add add 函式返回的是一個int型別的指標 函式原型宣告和定義中,函式名前加 的表示返回值是指標。例如標準庫函式gets char gets char str 從鍵盤讀入一行字串,如果讀入成功,返回值與str...
C語言裡自加和自減 放變數前和變數後有什麼不同作用啊
運算子在前,表示運算在前取值在後 運算子在後,表示運算在後取值在前c語言是程序式程式設計語言。不同於 純 函數語言程式設計語言,c語言的表示式可以改變變數的值或外部狀態,這被稱為表示式的 side effect i 就是含有 的表示式,在對 i i 這樣的字首運算子 prefix increment...
請教verilog裡變數宣告時和有什麼區別
1 模組宣告的擴充套件 1 verilog 2001允許將埠宣告和資料型別宣告放在同一條語句中,例子如下 向左轉 向右轉 2 verilog 2001中增加了ansic風格的輸入輸出埠宣告,可以用於module,task和function。例子如下 向左轉 向右轉 3 對於含有parameter的m...