3

現在、Mysql と PHP を使用しています。

数字を取得し、一連の数字の先頭に最も近い一致を見つけるクエリを探しています。たとえば、数字が019235678910, 026725678910, 026825678910あり、テーブルは次のようになります。

Table - Destintation

Name     Number
Watford  01923
Oxford   026
Romford  026
Crawford 0267
Topford  02672

したがって、私が渡すと019235678910、結果はWatford, であり、であり、.026725678910Topford026825678910OxfordRomford

また、MYSQL でこれを直接実行できるのか、それとも PHP と連携する必要があるのか​​ もわかりません。

4

2 に答える 2

2

それらすべてを取得する1つの方法を次に示します。

select d.*
from Destination d join
     (select length(Number) as maxlen, number
      from destination d
      where YOURVALUE like concat(Number, '%')
      order by maxlen desc
      limit 1
     ) dsum
     on d.Number = dsum.Number

最初のシーケンスを探しているため、数字の最大一致は 1 つだけです (したがって、limit 1動作します)。

ちなみに、呼ばれるフィールドnumberは明らかに文字フィールドです。個人的には、文字フィールドを「数字」と呼ぶのは悪い習慣だと思います。認知的不協和と呼ばれるものです。

于 2013-01-23T15:56:46.593 に答える
0
SELECT Name, Number
FROM Destintation
WHERE LEFT('026725678910', LENGTH(Number)) = Number

多分

WHERE '026725678910' LIKE CONCAT(Number, '%')
于 2013-01-23T15:45:59.467 に答える