我有這樣一個表:SQL服務器
Rule | Mask |Replacement
---------------------------------
@ # 12 | @ |[^0-9]
@ # 12 | # |[0-9]
即我構造接合這兩個表
表1
Mask_ID | Mask |Replacement
---------------------------------
1 | @ |[^0-9]
2 | # |[0-9]
表2
Rule_ID | Rule
--------------
1 | @ # 12
我想結果是這樣的:
Rule | Expression
--------------------
@ # 12 | [^0-9] [0-9] 12
我一直在試圖使用替換按鈕要做到這一點,但我只能夠產生這樣的結果
Rule | Expression
--------------------
@ # 12 | [^0-9] # 12
@ # 12 | @ [0-9] 12
我不知道如何讓REPLACE函數將多行應用於單行。如果有人有任何建議,我將不勝感激。
這是我到目前爲止,但它使我得到我上面提到的結果:
SELECT
A.PointMask_CODE
,B.PointMasking_Rule_CODE
,B.Mask
,B.Escape_Character
,B.EscapedMaskRule
,REPLACE(A.PointMask_CODE, B.Mask, B.EscapedMaskRule)
FROM
tblStatusPointMasks_CORE A
LEFT JOIN
vwAORs_Status_PointMasks_EscapedRules B
ON
PointMask_CODE LIKE '%' + B.EscapedMask + '%' ESCAPE ISNULL(B.Escape_Character, '\')
這不是一個關係設計。這就是爲什麼你有這麼多麻煩。您在Rule列中嵌入數組/符號列表,然後嘗試將其投影到表連接中。將數組和列表嵌入列中違反了第一範式。 – RBarryYoung