SQLを使用してデータをクエリする場合、文字列ベースの結果を操作する必要があるのは非常に一般的です。このタスクには、主要なリレーショナルデータベースシステム全体に多くのオプションがあります。この記事では、REPLACESQL関数のユースケースと機能について説明します。
REPLACE入門
FINDおよびREPLACE機能は、テキストエディタに付属しているため、誰もがよく知っています。 ANSI SQLは、組み込みシステム関数の形式でREPLACE機能を提供します。この記事では、選択するRDMSとしてSQLServerを使用します。
R EPLACE 関数パラメーター
REPLACE(string_expression、string_pattern、string_replacement)
String_expression は変換される文字列であり、単一の文字列または受信SQLクエリの列にすることができます。
String_pattern 置換する文字列式に適用される検索パターンです。
String_replacement string _patternのときに文字列に適用される置換値です string_expressionに一致します 。
REPLACE機能をよりよく理解するために、いくつかの例を見てみましょう。
サンプルデータの作成
この例では、一時テーブルを作成します REPLACE関数で使用されます。列名は関数のパラメーター値と一致します。
IF OBJECT_ID(N'tempdb..#TEMP_REPLACE_DEMO') IS NOT NULL
DROP TABLE #TEMP_REPLACE_DEMO
CREATE TABLE #TEMP_REPLACE_DEMO
(
ID INT IDENTITY(1,1),
STRING_EXPRESSION VARCHAR(2000),
STRING_PATTERN VARCHAR(200),
STRING_REPLACEMENT VARCHAR(200)
)
--REPLACE THE VALUE CAR WITH FOX
INSERT INTO #TEMP_REPLACE_DEMO
VALUES('The red car is the fastest car in the race.','car','fox')
--REPLACE THE VALUE 4 WITH 8
INSERT INTO #TEMP_REPLACE_DEMO
VALUES('There are 4 model ford cars in the parking lot.','4','8')
--REMOVE THE BLANK SPACE CHARACTER
INSERT INTO #TEMP_REPLACE_DEMO
VALUES(' This sentence has irregular spacing . ',' ','')
シンプルでダイナミックなREPLACE 例
テーブルにいくつかのサンプルデータが読み込まれたので、 REPLACEがどのように行われるかを調べてみましょう。 関数は、基本レベルでデータに適用してから、より動的な容量でデータに適用できます。
最初の例では、パラメーターは関数への文字列値としてハードコーディングされています。
--REPLACE THE VALUE CAR WITH FOX
SELECT REPLACE('The red car is the fastest car in the race.','car','fox') AS RESULT_FOR_SENTENCE
値はテーブルから動的に読み取ることもできます。この場合、式、パターン、および置換の値はすべて、ハードコーディングされるのではなく、テーブルから直接読み取られます。
--DYNAMIC EXAMPLE FOR ALL COLUMNS IN THE TABLE.
SELECT ID,REPLACE(STRING_EXPRESSION,STRING_PATTERN,STRING_REPLACEMENT) AS RESULT_FOR_TABLE
FROM #TEMP_REPLACE_DEMO
ID 1の結果は上記の例と同じですが、唯一の違いは、値が個々の列から読み取られたことです。
ネストされた置換
REPLACE関数は、ネストされた容量で使用することもできます。これは、内側のREPLACE関数の結果が、外側の置換関数のSTRING_EXPRESSIONパラメーターになる可能性があることを意味します。
サンプルデータのこのパターンの例を次に示します。
--REPLACE THE VALUE CAR WITH FOX | REPLACE THE VALUE "fastest" WITH "slowest"
SELECT REPLACE(REPLACE('The red car is the fastest car in the race.','car','fox'),'fastest','slowest')
--REMOVE THE BLANK SPACE CHARACTER | REPLACE THE VALUE "irregular" with "no"
SELECT REPLACE(REPLACE(' This sentence has irregular spacing . ',' ',''),'irregular','NO')
照合とREPLACE SQLで
照合は、文字列データとREPLACE関数を操作するときに考慮すべき重要な要素です。照合は、アカウントまたはインスタンスレベル、データベース、スキーマ、セッション、テーブルレベルなど、データベースの複数のレベルで設定できます。この設定は、REPLACE機能の動作に影響を与える可能性があります。
この例では、大文字のAが小文字のbに置き換えられることを期待できない場合があります。ただし、データベースへの現在の接続に継承されている照合に依存します。
--REPLACEMENT WITHOUT EXPLICIT COLLATION.
SELECT REPLACE('A','a','b') AS DEFAULT_COLLATION
この結果は、照合のためにaとAに一致します。
SQL Serverの照合設定は、サーバーレベルで確認できます。
--VIEW CURRENT COLLATION
SELECT CONVERT (varchar(256), SERVERPROPERTY('collation'));
ここで重要なのは、大文字と小文字を区別しないことを表すCIです。大文字と小文字を区別してREPLACE関数を適用するには、string_expressionパラメーターを明示的に照合できます。
-- USE COLLATE TO MATCH CHARACTER CASING FOR REPLACE
SELECT REPLACE('A' COLLATE Latin1_General_CS_AS ,'a','b') as Explicit_Collation;
この例では、string_expressionパラメーターで大文字と小文字が区別されるため、REPLACE関数は元の値を置き換えません。
概要
REPLACE関数は、複数のリレーショナルデータベースシステムにわたる基本的および高度な文字列操作のための優れたツールです。この記事では、REPLACE関数の基本的なアプリケーション、動的な容量での使用方法について説明しました。また、REPLACEを入れ子関数として使用する方法と、照合によって返される結果にどのように影響するかについても説明しました。