2013-01-07 87 views
0

有人可以解釋我如何在我的方案中爲列「名稱」添加前綴。爲SQL結果添加前綴

我想在兩個相同的表之間創建UNION。 兩者均包含「名稱」字段。在列名稱中,我想添加前綴「TABLE-A-」或「TABLE-B-」。

我知道我可以通過N'PREFIX' + Name做到這一點在選擇,但問題是,一些記錄已經有前綴和一些不要。所以通過使用這將創建這些記錄的雙前綴...

任何想法?

+0

我聞到腥數據庫設計前添加一個「+」號......但我想:要麼更換一無所有現有值,只是你的前綴添加到所有他們或工作與CASE表達式 – Najzero

+0

Najzero,我沒有選擇。我被整合到這個糟糕的數據庫中,他們在沒有通知我的情況下執行了大規模的更改... – no9

+0

出於好奇。是否會破壞任何簡單的更新所有行(又名剝離/修復具有添加的前綴的所有條目),然後再次將其添加到視圖/控制器中。 CASE肯定會起作用,但這只是一種解決方法,當您必須將前綴添加到某些但不是全部時,數據似乎「已損壞」,因爲已將該前綴存儲到數據本身 – Najzero

回答

2

可以使用CASE表達有條件地添加前綴:

CASE WHEN Name like 'A1-%' THEN Name ELSE N'A1-' + Name END 
+0

完美。正是我需要的。 – no9

1
case left(Name, 3) when N'A1-' then N'' else N'A1-' end + Name 
+0

感謝您的解析器 – no9

1

您可以使用CASE表達式:

CASE WHEN col1 LIKE 'TABLE-A-%' THEN col1 ELSE 'TABLE-A-' || col1 END 

另外,還可以使用4個選擇UNION:

select col1 FROM tab1 WHERE col1 LIKE 'TABLE-A-%' 
UNION 
select 'TABLE-A-' || col1 FROM tab1 WHERE col1 NOT LIKE 'TABLE-A-%' 
UNION 
<same stuff for table B> 
+0

感謝您的解析器,與我接受的解析器類似 – no9

1
SELECT 'TABLE-A'+REPLACE(Name,'TABLE-A','') 
FROM [TABLE-A] 
UNION ALL 
SELECT 'TABLE-B'+REPLACE(Name,'TABLE-B','') 
FROM [TABLE-B] 

拉吉

+0

這當然會刪除全部字符串中使用的所有前綴**。 –

+0

感謝您的支持者 – no9

0

的COUNTRYCODE

UPDATE [masters].[country] SET Countrycode = '+' +Countrycode 

output: 
=========== 
countrycode 
+91, 
+355, 
.... 
+0

請參閱問題中的第3段。作者需要有條件地添加''+''。這是問題的癥結,它不包含在你的答案中。 :( – Barett