Maybaygiare.org

Blog Network

SQLShack

この記事では、SQL ServerでSQL LIKE演算子を使用して、正規表現を使用してテキストを検索および/または操作する方法 まず、ワイルドカード正規表現を使用するためのシンボルと基本的な構文を学習します。 文字セットと繰り返し式を使用して柔軟な一致パターンを作成し、途中でLIKE演算子を使用するさまざまな方法を検討します。 そして、最後に、セクションの後半では、最も一般的で最も有用な正規表現の例をいくつか紹介します。

SQLは、データベースを操作するために最も一般的に使用される言語です。 レポートを設計したり、BIまたは任意のレポートツールを使用したりすると、ソフトウェアはほぼ確実にデータベース上で実行され、選択したデータを返すSQLクエ 特定のデータまたは特定の条件に適合するデータを探している場合、where句は必要なツールセットを提供します。 これにより、テーブル全体ではなく、探している特定の行を照会するオプションが提供されます。

前提条件

ここでAdventureworks2014データベースをダウンロードして、次のT-SQLサンプルをテストします。

はじめに

LIKEキーワードとワイルドカード文字を使用してSQLステートメントをウォークスルーしましょう。 それでは、SQL LIKE演算子について学び始めましょう。

ワイルドカード文字の例のようなSQLを使用して

正規表現は、WHERE句内の文字列を一致させる方法を記述するためのパターンです。 多くのプログラミング言語では、LIKE演算子で使用される構文とはわずかに異なる構文を使用する正規表現がサポートされています。 この記事では、正規表現を参照するときに、SQL LIKE演算子で使用されるパターンを参照しています

次の表には、四つの異なるワイルドカード文字が含まれ その他の例については、記事のSQL文字列関数For Data Munging(Wrangling)を参照することもできます。

ワイルドカード文字

説明

%

検索パターンにゼロ以上の文字を持つ任意の文字列

任意の文字列

任意の文字列

任意の文字列

任意の文字列

任意の文字列

任意の文字列

任意の文字列

任意の文字列

任意の文字列指定されたパターンの単一文字検索

指定された範囲内の任意の単一文字検索

指定された範囲内の任意の単一文字検索

指定された範囲内の任意の単一文字検索

‘%’ワイルドカード文字でsql likeを使用する

/p>

以下 私たちは文字’A’、文字列内にあると、ワイルドカード’%’、パーセントを使用する必要がある最初の文字を指定してみましょう。 /div>

1
2
3
人からトップ10*
を選択します。Person
ここで、firstnameは’a%’のようなものです;

firstnameがAで始まり、残りの文字が不明なpersonテーブルの上位10行を一覧表示する出力が表示されます。

ワイルドカード文字’_’と同様にSQLを使用する

ワイルドカード、アンダースコアは、任意の単一の文字に一致するためのものです。 次のSQLステートメントは、phonenumber列で7で始まり8で終わる市外局番を持つすべての電話番号を検索します。 また、残りの文字列値には関係ないため、検索パターンの最後に%ワイルドカード文字を含めました。/div>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
15
16
17
18
19
19
19
19
19
19
19
PhとしてPersonPhone

内部結合人。Ph.BusinessEntityID=pのpとして人。BusinessEntityID
where ph.PhoneNumber LIKE’7_8%’
ORDER BY p.LastName;

出力は、7で始まり8で終わる市外局番がリストされていることを示しています。

ワイルドカード文字

角括弧などでSQLを使用すると、その特定の位置にある複数の単一文字を識別できます。 たとえば、最初の名前の3番目の文字がIまたはKで始まるすべての行を一覧表示するとします。 複数のLIKE条件を記述する代わりに、パターンマッチングセットを3番目の位置に配置し、正方形で閉じることができます。 クエリエンジンは最初に’I’を探し、次に’K’を探します。

次のSQL文を実行してみましょう

1
2
3
/div>
divPhとしてPersonPhone
内部結合人。Ph.PhoneNumber LIKE’7_8%’and p.lastname like’Ba%’
ORDER BY p.LastName;

上記のクエリは、OR条件を使用して書き直すことができます。 それはOR条件のようなものです。/div>

1
2
1
2
1
2
PhとしてPersonPhone

内部結合人。Ph.Businessentityid=p.BusinessEntityID
ここで、ph.PhoneNumberは’7_8%’のようなもので、(p.lastnameは’Bai%’またはpのようなものです。出力では、3番目の文字が’I’または’k’である姓がリストされていることがわかります

‘^’ワイルドカード文字でsql likeを使用する

次のsqlステートメントは、姓の最初の文字にaからdで始まる文字を持たないすべての行を表示します。 そのためには、パターンの最初の位置にチルダ文字を配置します。 それは前提条件ではないとなります。 /div>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
15
16
17
18
19
19
19
19
19
19
19

/div>

p.firstname、
p.lastname
人から選択します。Person p
ここで、姓は’%’のようになります
P.lastnameで注文します; ここで、上記のクエリを実行すると、返されるすべての名前に最初の文字としてA、B、C、またはDが含まれていないことがわかります。

ワイルドカード文字でSQL NOT LIKEを使用する

次のSQLステートメントは、first name列に3文字以上の文字があるすべての人物を検索します。/div>

1
2
3
4
人物からdistinct
firstname
を選択します。人
どこfirstnameが好きではない”;

出力リストは、firstnameの長さが3以上の名前だけです

sqlの使用escape句と同様に

次のsqlステートメントでは、escape句を使用して文字’! 一時テーブルの列col1で文字列’100%Free’を見つけるには、’%’の意味を否定します。

1
2
3
4
5
6
7
8
9
10
11
12

DROP TABLE IF EXISTS temp;
CREATE TABLE temp(col1 VARCHAR(100));
GO
INSERT INTO temp
VALUES(‘ApexSQL Refactor is 100% Free SQL Formatter tool’), (‘ApexSQL Job is 10-15% off today only’);
移動
SELECT*
FROM TEMP;
SELECT*
from temp
WHERE col1LIKE’%100!%Free%’エスケープ’!
GO

出力は、検索パターン’100%無料’がcol1式と一致する値のみをリストします。

CASEステートメントと同様にSQLを使用して

次のSQLステートメントは、間にダッシュが付いている三三四桁のような形式の電話番号を持つすべての従業員を取り出します(999-999-9999)。 次に、パターンをphonenumber列と比較して、国内カテゴリまたは国際カテゴリを導出します。

case式は、電話カテゴリタイプを導出するために、特定のパターンに対して評価されます。/div>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
15
16
17
18
19
19
19
19
19
19
19
6
7
8
9
p.firstname、
p.lastname、
phonenumber、
ph.phonenumberが”–“のような場合、”国内の電話番号”
else’国際電話番号’
インド電話番号
人から。PhとしてPersonPhone
内部結合人。Ph.BusinessEntityID=p.BusinessEntityID
ORDER BY p.LastName;

出力では、番号が国内または国際として分類されていることがわかります。 Phonenumber列は、角括弧を使用してLIKE演算子で評価されます。 最初の文字位置のゼロから九の数字は、パターンゼロから九の一致について評価され、第二の文字位置と第三のゼロから九の任意の数字はダッシュでなければならず、同様の論理が残りの文字に適用される。

動的SQLと同様にSQLを使用する

次のSQLステートメントは、lastnameがパターンBarbと一致するすべての従業員を返します。 パターンは動的に作成され、式と比較されます。 /div>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
15
16
17
18
19
19
19
19
19
19
19
6
7
@elastname varchar(20)=’barb’;
select p.firstname,
p.lastname,
the.Div>

あなたからの
あなたからの
人p
人に参加します。P.BusinessEntityID=’s.AddressID
ここで、p.LastNameは’%’+@ELastName+’%’のようなものです;

出力は、指定されたパターンBarbに一致する行をリストします

注:デフォルトでは、charは、フィールドの長さに応じて後続の空白を挿入します。 Charデータ型を使用している場合は、RTRIMを使用して末尾の空白を抑制します。次のSQL文では、@eLastNameフィールドはcharデータ型です。 RTRIM関数を使用して、末尾の空白をトリムすることができます。/div>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
15
16
17
18
19
19
19
19
19
19
19
6
7
@elastname char(20)=’barb’;
select p.firstname,
p.lastname,
the.Div>

あなたからの
あなたからの
人p
人に参加します。P.BusinessEntityID=’s.AddressID
ここで、p.LastNameは’%’+RTRIM(@ELastName)+’%’のようなものです;

IF文と同様にSQLを使用して

次のSQL文では、IF文を使用してcondition句内の特定のパターンに対して入力値が評価されます。 /div>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
15
16
17
18
19
19
19
19
19
19
19

declare@rulename nvarchar(max)=’sql sever2019ctpはプレビュー可能です’

;
@RuleName LIKE’SQL Sever%CTP is available for preview’の場合
PRINT’有効な入力が良い!’;
ELSE
PRINT’有効な良いではありません!’;

入力文字列は、ワイルドカード式のようなSQLを使用して特定のパターンに対して評価され、有効な入力文字列を返します。

Summary

ここまでは、SQL LIKE演算子で使用できるさまざまなヒントと四つの異なるワイルドカード(%、_、および^]について説明しました。 これは、指定されたパターンと文字列を一致させるための素晴らしい検索技術です。 使用可能なワイルドカード文字は、LIKE演算子をより柔軟にします。 SQL ServerのSQL LIKE演算子に関するこの記事を楽しんでいただければ幸いです。 以下のコメントでご質問をお気軽に。

  • 著者
  • 最近の投稿
Prashanth Jayaram
私はデータベース技術に関する11年以上の豊富な実践的な経験を持つデータベース技術者です。 私はマイクロソフト認定プロフェッショナルであり、コンピュータアプリケーションのマスターの学位を取得しています。
私の専門は、高可用性ソリューションとクロスプラットフォームDB移行を実装する&の設計にあります。 現在取り組んでいる技術は、SQL Server、PowerShell、Oracle、MongoDBです。
Prashanth Jayaramによるすべての投稿を表示する
Prashanth Jayaram
Prashanth Jayaramによる最新の投稿(すべてを参照)
  • SQLのデータベース監査の概要-January28,2021
  • Azure SQL間のAzureデータ同期データベースとオンプレミスのsql server-2021年1月20日
  • powershellを使用してAzure sqlデータベースのインポート/エクスポート操作を実行する方法-2021年1月14日

コメントを残す

メールアドレスが公開されることはありません。