引號中的內容為字串,可以是數值,也可以是字元
沒有引號的數字為表示為資料值(這裡是整型數值),字元一般表示為欄位名。
儘管這樣,系統會自動先進行一致性轉換,再進行比較,所以,如果你的SNO是數值型,兩個查詢都不會報錯,也會查詢出想要的結果。但如果SNO是字元型,第一個查詢就有可能報錯,這要看SNO的資料中的字串是否均為數字。如果有字元型字串,就會報錯。
為什麼會這樣呢?這就要了解系統內部的查詢過程:
select * from student where sno = 100 在查詢時,比較的過程是,提取每一個SNO,如果是整型或數值型,則不轉換,如果是字元型,則要將SNO轉換為數值型再比較。這樣,如果SNO存有含字元的資料,如"111A",轉換時就會報告資料型別錯誤。
而select * from student where sno="100" ,如果SNO是整型,就會將"100"先轉換為整型再與SNO進行比較,如果是字元型,就直接與SNO進行比較。
引號中的內容為字串,可以是數值,也可以是字元
沒有引號的數字為表示為資料值(這裡是整型數值),字元一般表示為欄位名。
儘管這樣,系統會自動先進行一致性轉換,再進行比較,所以,如果你的SNO是數值型,兩個查詢都不會報錯,也會查詢出想要的結果。但如果SNO是字元型,第一個查詢就有可能報錯,這要看SNO的資料中的字串是否均為數字。如果有字元型字串,就會報錯。
為什麼會這樣呢?這就要了解系統內部的查詢過程:
select * from student where sno = 100 在查詢時,比較的過程是,提取每一個SNO,如果是整型或數值型,則不轉換,如果是字元型,則要將SNO轉換為數值型再比較。這樣,如果SNO存有含字元的資料,如"111A",轉換時就會報告資料型別錯誤。
而select * from student where sno="100" ,如果SNO是整型,就會將"100"先轉換為整型再與SNO進行比較,如果是字元型,就直接與SNO進行比較。