-1

私の必要性は、mysqlから宛先を選択することです

データベースには次の情報が含まれています

 IBIS, COUNTRY, REGION
 "AFG", "93";
 "AFG Mobile AWCC", "93", "70"
 "AFG Mobile ETSLAT", "93", "78"
 "AFG Mobile AREEBA", "93", "77"
 "AFG Mobile", "93", "75"

情報を探しています ZONE COUNTRY + 結果は IBIS である必要があります

Search 1 :9378555555 => Mobile AFG ETSLAT
Search 2 :9377755555 => Mobile AFG AREEBA
Search 3 :9399999999 => AFG

読んでくれてありがとう:)

+++++ 更新

"ALB Fixed ALBTEL";"355";"4249"
"ALB Tirana";"355";"422, 423, 4240, 4241, 4242, 4243, 4244, 4245, 4246, 4247, 4248"

Country var(3) と Region は concat ...

Search 1 :355424955555 => ALB Fixed ALBTEL
Search 2 :35542405555  => ALB Tirana
4

1 に答える 1

0

私は次のようなものを使用します:

SELECT
  *
FROM
  yourtable
WHERE
  COUNTRY = LEFT('9399999999', 2)
  AND (REGION = SUBSTRING('9399999999', 3, 2) OR REGION IS NULL)
ORDER BY
  REGION IS NULL
LIMIT 1

ここでフィドルを参照してください。

編集

これまでで最もクリーンなソリューションではありませんが、私には問題ないようです:

SET @num = '35542405555';

SELECT *
FROM
  yourtable
WHERE
  @num LIKE CONCAT(COUNTRY, '%')
  AND (REGION IS NULL
       OR FIND_IN_SET(SUBSTRING(@num, LENGTH(COUNTRY)+1, 2), REPLACE(REGION, ' ', ''))
       OR FIND_IN_SET(SUBSTRING(@num, LENGTH(COUNTRY)+1, 3), REPLACE(REGION, ' ', ''))
       OR FIND_IN_SET(SUBSTRING(@num, LENGTH(COUNTRY)+1, 4), REPLACE(REGION, ' ', '')))
ORDER BY
  REGION IS NULL
LIMIT 1

ここでフィドル。これは、2、3、または 4 文字の REGION に限定されます。

于 2013-03-28T09:25:31.373 に答える