2016-09-10 44 views
0

我想爲逗號分隔的字符串中的每個項目使用unhex函數。在這個字符串中,這個二進制id作爲前端發送的字符串。使用子句中的每個項目的函數mysql

select * from table where id in 
('5534B753765411E6B3FA0021004B111C,1668309A6E6F11E6B405F819928F1AD1,4FE75C954EEB11E6BB970F782D79D6C8') 

我想用這個像

select * from table where id in (unhex('5534B753765411E6B3FA0021004B111C'),unhex('1668309A6E6F11E6B405F819928F1AD1'),unhex('4FE75C954EEB11E6BB970F782D79D6C8')) 
+0

不能使用在where子句中unhex。檢查mysql文檔:http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_unhex – Marcs

回答

1

IN的還支持SELECT語句,所以你可以嘗試使用該功能,像這樣:

SELECT * 
FROM table WHERE id IN 
(SELECT UNHEX('5534B753765411E6B3FA0021004B111C') 
UNION ALL 
UNHEX('1668309A6E6F11E6B405F819928F1AD1') 
UNION ALL 
UNHEX('4FE75C954EEB11E6BB970F782D79D6C8')); 
+0

代碼無法正常工作。 – user1525591

+0

代碼不起作用。實際上我必須調用這個內部存儲過程,並且上面的所有字符串值都將在參數內。 – user1525591

+0

pachonk沒有錯,這個例子不起作用,它是你的不透露全部信息。 – e4c5

0
select * from table where 
    FIND_IN_SET(id,'5534B753765411E6B3FA0021004B111C, 
    1668309A6E6F11E6B405F819928F1AD1,4FE75C954EEB11E6BB970F782D79D6C8');