2016-06-27 12 views
0

私は空ではない領域と列領域と呼ばれるテーブルを持っています。その中に「タシケント」というテキストがあります。私は式入力でそれにアクセスしようとしています。ここに私のコードです:PostgreSQLの適切な正規表現

select * from regions where lower(region) ~ '[t]{1,}[k]{1,}'; 

あなたが見ることができるように、私は手紙連続tkが含まれている単語を取得しようとしています。私の表現によると、上記の[t]{1,}[k]{1,}は、テキスト'Tashkent'を返しますが、返さないはずです。私のコードは正しいですか? tkの文字を持っていることを知って「タシケント」という言葉を得るための代替コードを提案できますか?

答えて

1

あなたは私はあなたが正規表現の必要がない欲しいものを理解していれば)tk

select lower('Tashkent') ~ 't{1,}.*k{1,}'; 
?column? 
---------- 
t 
+0

はい。ワーキング。どうもありがとうございます。私は、POSIXと式を別々に知っている多くの情報源を探しました。 PSQLのドキュメントさえあれば、それほど多くはありません。あなたは源を傾けるべきことをお勧めしますか?もう一度ありがとうございます。 –

+0

@ShohruhAbduakhatov:検索する用語は_regular expression_ –

+0

です。@ShohruhAbduakhatov:[Postgresql manual](https://www.postgresql.org/docs/current/static/functions-matching.html#FUNCTIONS-POSIX-REGEXP) –

1

1の間の文字を指定する必要があります:あなたがしたい場合は、絶対にこれを行う)

 select * from regions where region ilike '%t%k%' 

2正規表現:

  • 't {1、}。* k {1、}'あなたに「tk」がある場合のみtrueを返しますr文字列、たとえば「azerty ttk qwerty」。
  • 良い解決策は、クロードオルドネトの溶液である:低い(領域)〜T '{1} * K {1}。' あなたはまた、領域と低い機能を削除することができ

  • 〜「[tTを{ 1、} * [KK] {1}」

  • 、最後に{1} +で置き換えることができる:領域〜 '[tTを] + * [KK] +'
+0

ニース。いい答えだ。 Thanx、1つの答えで学ぶために非常に有用なもの。どうもありがとう –

関連する問題