2017-10-01 1 views
0

を選択します。ここで、データには、次の表より5以上の値が含まれています。すなわち行11,13,14,16です。検索値よりも少なくとも1つの値を含むすべての行をmysqlテーブルから選択するにはどうすればよいですか?例えば、

╔════╦═══════════════════╗ 
║ ID ║ Data    ║ 
╠════╬═══════════════════╣ 
║ 10 ║ 2 or 3   ║ 
║ 11 ║ 5 and 6   ║ 
║ 12 ║ 3 or 4   ║ 
║ 13 ║ 5 or 6(Optional) ║ 
║ 14 ║ 5     ║ 
║ 15 ║ 1 or 2   ║ 
║ 16 ║ 6 (Optional) or 3 ║ 
╚════╩═══════════════════╝ 
+0

「データ」はどのデータ型ですか? – Panther

+0

データ列、その型、および、および任意の意味については、dbの文脈の中で正確に述べることができますか? –

+0

**データ**のデータ型は** varchar **です。 @パンサー – Osamaha

答えて

0

私はこのような問題を解決しました。

CREATE FUNCTION explode(str VARCHAR(255), delim VARCHAR(12), pos INT) 
RETURNS VARCHAR(255) 
RETURN REPLACE(SUBSTRING(SUBSTRING_INDEX(str, delim, pos), 
     LENGTH(SUBSTRING_INDEX(str, delim, pos-1)) + 1), 
     delim, ''); 


SELECT ID,REPLACE(Data,'(Optional)','') AS data FROM `Temp` WHERE data >= 5 OR TRIM(explode(explode(data,'and',1),'or',1)) >= 5 OR TRIM(explode(explode(data,'and',1),'or',2)) >=5 OR TRIM(explode(explode(data,'and',2),'or',1)) >=5 OR TRIM(explode(explode(data,'and',2),'or',2)) >=5 
関連する問題