然後在一張員工表中,只有乙個字段(將公司id和部門id拼接成了乙個新字段),那麼我要找到該公司下所有員工,只有先模糊查詢user_source表,獲取該公司下所有的員工id、員工姓名、員工source。那麼資料量有上百條,如果我把這批資料(如上圖所示),放到業務層通過「-」分割,再根據對應的公司id和部門id去查詢對應的公司名稱或者部門名稱,那就是要執行上百條sql了(視某公司的員工數量為準)。那將是乙個很龐大的資料庫讀取操作。
所以我的解決方案就是把其放到sql層面上操作:通過對
資料的分割,在根據對應的去查詢對應的表的公司名稱和部門名稱,所涉及的知識,是乙個sql函式:regexp_split_to_array,他會對使用者設定的分隔符進行對欄位資料的分割,然後返回的是乙個陣列,然後通過下標獲取對應的字串id。
select
user_id as "userid",
user_name as "username",
user_source as "usersource",
(regexp_split_to_array(user_source,'-'))[1] as "classid",
(select
class_name as "classname"
from
jc_classification
where
class_id = (regexp_split_to_array(user_source,'-'))[1]
),(regexp_split_to_array(user_source,'-'))[2],
(select
dept_name as "deptname"
from
jc_department
where
department_id = (regexp_split_to_array(user_source,'-'))[2]
)from
hz_user_info
where
user_level = '2'
and user_source like 'xhrsbx%'
order by user_id;
其查詢出來的結果就是
二、對應該函式的基本用法:
select
user_id as "userid",
user_name as "username",
user_source as "usersource",
(regexp_split_to_array(user_source,'-'))[1],
(regexp_split_to_array(user_source,'-'))[2]
from
hz_user_info
where
user_level = '2'
and user_source like 'xhrsbx%'
order by user_id;
表結構:
SQL資料表層面操作(DDL)
ddl data definition language 資料定義語言 用於對資料庫和資料表的操作,因為操作物件有兩個 資料庫和資料表 所以我們要在每個命令之後 create drop alter show後面加上database或者table 表明自己操作的物件。這篇文章主要講述對資料表 tabl...
在SQL中實現陣列
t sql象陣列一樣處理字串 分割字串 在日常的程式設計過程中,陣列是要經常使用到的。在利用sql對資料庫進行操作時,有時就想在sql使用陣列,比如將1,2,3,4,5拆分成陣列。可惜的是在t sql中不支援陣列。不過還是有變通的辦法。我們可以自己編寫兩函式get strarraylength 取得...
在SQL中實現陣列功能
t sql象陣列一樣處理字串 分割字串 在日常的程式設計過程中,陣列是要經常使用到的。在利用sql對資料庫進行操作時,有時就想在sql使用陣列,比如將1,2,3,4,5拆分成陣列。可惜的是在t sql中不支援陣列。不過還是有變通的辦法。我們可以自己編寫兩函式get strarraylength 取得...