2014-11-25 61 views
0

我想要做這樣的事情 REPLACE()幾個值,並使用的結果()

SELECT 
    id, 
    num 
FROM 
    sometable 
WHERE 
    num IN (REPLACE ('K-123, K-456, K-678', 'K-', '')); 

但:

(REPLACE ('K-123, K-456, K-678', 'K-', '')) 

回報:「 123,456,678'

沒有如我所料:「123」,「456」,「678」

所以,是有可能使元素列表REPLACE()使用該結果作爲論據()後?

謝謝。

回答

1

您可以使用find_in_set()

where find_in_set(num, replace(replace('K-123, K-456, K-678', 'K-', ''), ', ', ',')) > 0 
+0

如果我理解正確FIND_IN_SET()如果找到匹配這個函數必須返回位置。 'code' SELECT FIND_IN_SET(123,REPLACE(REPLACE('K-123,K-456,K-678','K-',''),',','')) nothing returned 'code 'SELECT REPLACE(REPLACE('K-123,K-456,K-678','K-',''),',','') return 123456678它是正確的嗎? – Initialis 2014-11-25 13:23:04

+0

糟糕,目的是用'',''替換'',''。 – 2014-11-25 13:33:34

+0

'code'SELECT FIND_IN_SET(123,REPLACE(REPLACE('K-123,K-456,K-678','K-',''),',',',')) return nothing – Initialis 2014-11-25 13:38:18

相關問題