0

列の値をいくつかのリストと比較し、それぞれ別のものを出力したいと考えています。Chevy、Ford などの自動車ブランドのリストです。私のロジックは次のようになります。

if(mycolumn like carlist1, 'this', '')
if(mycolumn like carlist2, 'that', '')
if(mycolumn like carlist3, 'foobar', '')

mycolumn は のような値を持っているChevy-1234ので、数字が変わるので、それは like でなければなりません。MySQLでそれを行うにはどうすればよいですか?

ありがとう!

4

3 に答える 3

1

あなたの最善の策は、次のようなデータを使用して、車のリストをテーブルとして保存することです。

Chevy
Ford

等々。

次に、結合で必要なことを実行できます。

select t.*,
       max(case when cl.brand = 'Chevy' then 'this' end) as Chevy,
       max(case when cl.brand = 'Ford' then 'this' end) as Ford,
       . . .
from t left outer join
     carlist cl
     on left(t.col, length(cl.brand)) = cl.brand
group by t.id

それ以外の場合は、次の番号を処理する必要があります。

select (case when left(col, locate('-', col) - 1) = carlist1 then 'this' end),
       (case when left(col, locate('-', col) - 1) = carlist2 then 'that' end),
       (case when left(col, locate('-', col) - 1) = carlist3 then 'foobar' end)
于 2013-03-06T12:57:48.113 に答える
1

このようにmysqlで試してください

SELECT
  if(mycolumn like 'carlist1%', 'this', '') as 'Blah1',
  if(mycolumn like 'carlist1%', 'that', '') as 'Blah2',
  if(mycolumn like 'carlist1%', 'foobar', '') as 'Blah3'
FROM mytable
于 2013-03-06T11:39:48.110 に答える
0

あなたが使用することができます

SELECT
  WHEN mycolumn LIKE 'carlist1%' THEN 'this' END AS Blah1,
  WHEN mycolumn LIKE 'carlist1%' THEN 'that' END AS Blah2,
  WHEN mycolumn LIKE 'carlist1%' THEN 'foobar' END AS Blah3
FROM mytable
于 2013-03-06T12:00:02.073 に答える