天天看點

Sql查詢inner join on 後面的等于号兩邊資料類型不一緻 需要使用cast 或者 convert進行類型強轉換

舉個簡單的執行個體  分别建立三張表 分别是使用者基本資訊表 教師擴充資訊表  學生擴充資訊表  見表語句如下  使用者基本資訊表中的user_type 的字段相當于外鍵 如果使用者資訊代表的是學生 則是學生Id  如果使用者基本資訊代表的是老師  則表示的教師Id ,教師資訊表中的Id是自增類型的  學生資訊表中的id是字元串類型用UUID生成(這裡隻是舉這麼個例子 不喜勿噴 實際運用中不這麼做) 以下分别是三張表的建表語句

使用者資訊表:

Sql查詢inner join on 後面的等于号兩邊資料類型不一緻 需要使用cast 或者 convert進行類型強轉換

 使用者基本資訊插入:

Sql查詢inner join on 後面的等于号兩邊資料類型不一緻 需要使用cast 或者 convert進行類型強轉換

學生資訊拓展表

Sql查詢inner join on 後面的等于号兩邊資料類型不一緻 需要使用cast 或者 convert進行類型強轉換

教師資訊表:

Sql查詢inner join on 後面的等于号兩邊資料類型不一緻 需要使用cast 或者 convert進行類型強轉換

教師表插入資訊如下 

Sql查詢inner join on 後面的等于号兩邊資料類型不一緻 需要使用cast 或者 convert進行類型強轉換

當我們查教師資訊的時候 用簡單的inner join 會出現緻命的錯誤 具體情況如下

Sql查詢inner join on 後面的等于号兩邊資料類型不一緻 需要使用cast 或者 convert進行類型強轉換

當我們查詢教師資訊的時候 需要進行如下類型的轉換  cast(t.id as char) 或者 convert(t.id, char) 而不能直接inner join

Sql查詢inner join on 後面的等于号兩邊資料類型不一緻 需要使用cast 或者 convert進行類型強轉換

 以下争對這個業務的三個 sql 第一種是錯誤的 隻有後面兩種才是正确的

Sql查詢inner join on 後面的等于号兩邊資料類型不一緻 需要使用cast 或者 convert進行類型強轉換

總結一下 當我們在實際開發中遇到這種類型不一緻的進行關聯的時候 一定要記得做強類型轉換  否則都不知道會發生什麼 

繼續閱讀