2011-03-25 35 views
0

我需要從產品代碼中刪除以下前綴,因爲您看到我包含了一個簡單的查詢,而下面顯示我釐米我不是想我不能使用替代,因爲它的代碼替換釐米的任何實例的前綴在supplire表交叉持有的產品表是指如何刪除前綴表中的字符並確保僅從字符串的起始處被刪除

前綴不是總有兩個chrachters例如可以TOW

SELECT * , left(prod.productcode, LEN(sup.prefix)) AS MyTrimmedColumn 
FROM MSLStore1_Products prod ,supplier sup 
WHERE prod.suppid = 9039 AND prod.SgpID = 171 
and sup.supno = prod.suppid 

產品編號:

ProductCode 
CMDI25L 
CMDI300M 
CMDI750M 
CMXFFP5L 

前綴:

Prefix 
CM 
CM 
CM 
CM 

回答

0

你可以使用SUBSTRING()爲:

SUBSTRING(prod.productcode, LEN(sup.prefix)) 

(具體語法可以爲不同的數據庫管理器會發生變化)

+0

我這個 SELECT *,右(prod.productcode,LEN(產品解決了這個問題。產品代碼) - LEN(sup.prefix))AS MyTrimmedColumn FROM MSLStore1_Products prod,supplier sup WHERE prod.suppid = 9217 AND prod.SgpID = 123 and sup.supno = prod.suppid – rogue39nin 2011-03-25 16:25:08

+0

是的,它具有相同的結果。但我不知道額外的'LEN()'是否需要更多的努力。 – MacGucky 2011-03-25 16:28:44

0

你可能想要把你的前綴中另一個表,並通過過濾UDF運行productCode字段以檢索最終代碼。

喜歡的東西

SELECT *,dbo.FilterPCode(prod.productcode)AS MyTrimmedColumn FROM MSLStore1_Products督促,供應商SUP WHERE prod.suppid = 9039 AND prod.SgpID = 171 和sup.supno = PROD .suppid

然後只需定義一個UDF,它接受一個字符串產品代碼並從前面刪除任何前綴。

對於真正的海量查詢,您可能會看到使用UDF進行性能降低,如果是這種情況,最好生成一個產品代碼表,但不要將前綴鏈接到帶前綴的產品代碼。對數據模式不夠了解,不知道如果沒有獲得交叉鏈接,這是否真的有可能。

0

我如何想使用此查詢和imortant從結果到產品表外碼字段

SELECT * , right(prod.productcode, len(prod.productcode) - LEN(sup.prefix)) AS ExternalCoode 
FROM MSLStore1_Products prod ,supplier sup 
WHERE prod.suppid = 9217 AND prod.SgpID = 123 and sup.supno = prod.suppid 
+2

你在尋找誰?這不是一個真正的答案,更像是評論。當你獲得更多的代表時,系統會信任你,你可以在任何地方發表評論。同時,請不要發表評論作爲答案。謝謝。 – 2011-03-25 21:39:08