[英]Union or merge tables to accommodate for specific needs in SQL Server
我有 3 個臨時表,它們為手機號碼創建了兩列; 例如,移動 1 具有所有國內和國際號碼,而移動 2 具有一些需要從++41
轉換為0041
的數字。
如何將這些數字合並到一列中,從而保留 mobile1 中的所有內容,除了少數更改的 ++ 數字
看起來像:
mobile 1 cust mobile 2
-------------------------------------------
078998899 98743872
079445544 12342343
+637976945247 41768999 00637976945247
+41405355893 98767856 0041405355893
+41412387946 43789347 0041412387946
+4113120464 85903479 000413120464
它應該是:
mobile final cust
----------------------------------
078998899 98743872
079445544 12342343
00637976945247 41768999
0041405355893 98767856
0041412387946 43789347
000413120464 85903479
我在這里試過這個,但它對括號不滿意,我很樂意在這里提供一些幫助。 這是用於 SQL Server
SELECT *
INTO #temp_UNION
FROM
(SELECT *
FROM [#national_numbers]
UNION
SELECT *
FROM [#international_numbers]
UNION
SELECT *
FROM [#plusplus_numbers]
UNION) v
您可以在 CASE WHEN 和 LEFT、CHARINDEX、SUBSTRING 和 Like 的幫助下根據條件將兩列數據設置為一列。
我強烈建議使用 CHARINDEX 以獲得更好的性能, 以下是我們的 LIKE vs SUBSTRING vs LEFT/RIGHT vs CHARINDEX 速度測試的結果,以毫秒為單位。
create table #Test (mobile1 varchar(100),cust varchar(100),mobile2 varchar(100))
insert into #Test values('078998899','98743872',null)
insert into #Test values('079445544','12342343',null)
insert into #Test values('+637976945247','41768999','00637976945247')
insert into #Test values('+41405355893','98767856','0041405355893')
insert into #Test values('+41412387946','43789347','0041412387946')
insert into #Test values('+4113120464','85903479','000413120464')
使用字符索引:
SELECT CASE WHEN CHARINDEX ('+',mobile1)=1 THEN mobile2 ELSE mobile1 END As MobileNo, cust from #Test
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.