SQL Tips

 

[SQL Server] LIKEで「_」、「%」が入った文字を検索する方法

MS-SQL / SQL Server
LIKEで「_」、「%」が入った文字を検索する方法。

LIKEで検索する時に「_」(アンダーバー)、「%」(パセント)はそれぞれ意味がある。

「_」(アンダーバー)の場合、テストしながら確認してみよう。

--#### テストテーブル作成
CREATE TABLE dbo.TempData
(
Data1 varchar(50)
)

--#### テストデータ登録
INSERT INTO dbo.TempData
SELECT 'abcd' UNION ALL
SELECT 'abDd' UNION ALL
SELECT 'ab1d' UNION ALL
SELECT 'ab#d' UNION ALL
SELECT 'abcdef' UNION ALL
SELECT 'ab1def' UNION ALL
SELECT 'ab_d' UNION ALL
SELECT 'ab_d1' UNION ALL
SELECT 'ab_d2' UNION ALL
SELECT 'ab_d%3'

では、下記のクエリを実行してどんな結果がでるのか確認してみましょう。

SELECT * FROM dbo.TempData WHERE Data1 like 'ab_d%'

実行結果




上記のクエリだとData1列のデータに1,2文字目が’ab’、4文字目が’d’で3文字目は任意の1文字を含むデータを検索って意味。
じゃ、3文字目を任意の1文字ではなく文字列「_」として認識させて検索したい時はどうすればいいの?
例えば、上記のSQLのデータだと、
ab_d、ab_d1、ab_d2、ab_d3 だけ検索したい。
こういう場合は3文字目の「_」を無効化する必要がある。
その方法がこれだ。

SELECT * FROM dbo.TempData WHERE Data1 like 'ab\_d%' ESCAPE '\'

3文字目「_」の前に「\」文字をつけて後に、
SQL後ろの方に 「ESCAPE ‘\’」を追加して検索することで「_」を文字列で認識させるのだ。

もしくは下記のように作成してもできる。

SELECT * FROM dbo.TempData WHERE Data1 like 'ab[_]d%'

「_」の前後に[ 、] をつけて検索すると「_」を文字列として認識させ検索することができる。

実行結果



「%」(パセント)の場合、テストしながら確認してみよう。
この場合も上記の同じ方法で検索するばできる。

SELECT * FROM dbo.TempData WHERE Data1 like 'ab_d[%]%'
--もしくは
SELECT * FROM dbo.TempData WHERE Data1 like 'ab_d\%%' ESCAPE '\'

実行結果



必ず、テストをして結果を確認して理解してください。
意外と重要です。~

このエントリーをはてなブックマークに追加
2014-09-17 15:48:58   3962

コメント

[SQL Server] 順位付け関数「RANK」、「DENSE_RANK」について

-.日付:2014-10-15   カテゴリ : -   閲覧数:2188

[SQL Server] DISTINCT - 重複行を除外してデータの取得方法

-.日付:2014-10-03   カテゴリ : -   閲覧数:2885

[SQL Server] DATETIME データ型のミリ秒に関する注意事項

-.日付:2014-10-01   カテゴリ : -   閲覧数:3105

[SQL Server] RAND(ランダム)関数で乱数を取得する方法

-.日付:2014-09-24   カテゴリ : -   閲覧数:11874

[SQL Server] 順位付け関数「ROW_NUMBER」について

-.日付:2014-09-17   カテゴリ : -   閲覧数:2562

[SQL Server] LIKEで「_」、「%」が入った文字を検索する方法

-.日付:2014-09-17   カテゴリ : -   閲覧数:3962

[SQL Server] SQL Server CPU 使用率が高いクエリを検索する方法

-.日付:2014-09-12   カテゴリ : -   閲覧数:7042

[SQL Server] 既存のテーブルにPrimary Key(PK)を設定する方法

-.日付:2014-08-20   カテゴリ : -   閲覧数:2028

[SQL Server] テーブルの一覧を取得する方法 - Table List

-.日付:2014-08-14   カテゴリ : -   閲覧数:2253

Copyright © 2015 INNOYA.COM All rights reserved. RSS