3

varchar 変数内で最長一致を検索するにはどうすればよいでしょうか? たとえば、テーブル GOB には次のようなエントリがあります。

magic_word |  prize
===================
         sh|  $0.20
        sha|  $0.40
       shaz|  $0.60
      shaza|  $1.50

shazam他の引数の中で文字列を入力として受け取り (例: )、最長の一致する部分文字列を含む GOB の行の「賞品」列を返すplpgsql 関数を作成したいと思います。示されている例では、それは$1.50magic_word の行にありますshaza

私が扱うことができるすべての関数形式は、ちょうど一致するビットです。エレガントなソリューションは考えられません。おそらく本当に簡単だと思いますが、頭を悩ませています。入力文字列は、別のテーブルに対するクエリの結果から派生するため、最初はわかりません。

何か案は?

4

2 に答える 2

1

どうですか

1

     select max(FOO.matchingValue)
     from
      (
        select magic_word as matchingValue
        from T
        where substr( "abracadabra", 1, length(magic_word)) = magic_word 
      )
      as FOO

2

select prize from
T
  join
  (
  select max(FOO.matchingValue) as MaxValue
     from
      (
         select magic_word as matchingValue
        from T
        where substr( "abracadabra", 1, length(magic_word)) = magic_word 
      )
      as FOO
) as BAR
on BAR.MaxValue = T.magic_word
于 2013-05-04T01:37:09.917 に答える