文字列関数
ASCII(character_expression)
文字式の左端の文字のASCII コード値を返します。
- character_expression:文字式。
SELECT ASCII('0'); -- Result: 48
CHAR(integer_expression)
整数のASCII コードを対応する文字に変換します。
- integer_expression:0 から255 までの整数。
SELECT CHAR(48); -- Result: '0'
CHARINDEX(expressionToFind ,expressionToSearch [,start_location ])
指定した文字列式の開始位置を返します。
- expressionToFind:検索対象の文字式。
- expressionToSearch:検索対象となる文字式(通常は、カラム)。
- start_location:expressionToFind の検索を開始するexpressionToSearch 内の文字位置(オプション)。
SELECT CHARINDEX('456', '0123456'); -- Result: 4 SELECT CHARINDEX('456', '0123456', 5); -- Result: -1
CHAR_LENGTH(character_expression),
式内にあるUTF-8 文字の数を返します。
- character_expression:長さを評価する文字のセット。
SELECT CHAR_LENGTH('sample text') FROM Account LIMIT 1 -- Result: 11
CONCAT(string_value1, string_value2 [, string_valueN])
2つ以上の文字列値を連結した文字列を返します。
- string_value1:連結される最初の文字列。
- string_value2:連結される2番目の文字列。
- *:連結される任意の数の文字列。
SELECT CONCAT('Hello, ', 'world!'); -- Result: 'Hello, world!'
CONTAINS(expressionToSearch, expressionToFind)
expressionToSearch 中にexpressionToFind が見つかった場合は1を、それ以外は0を返します。
- expressionToSearch:検索対象となる文字式(通常は、カラム)。
- expressionToFind:検索対象の文字式。
SELECT CONTAINS('0123456', '456'); -- Result: 1 SELECT CONTAINS('0123456', 'Not a number'); -- Result: 0
ENDSWITH(character_expression, character_suffix)
character_expression がcharacter_suffix で終わる場合は1を、それ以外は0を返します。
- character_expression:文字式。
- character_suffix:検索する文字のサフィックス。
SELECT ENDSWITH('0123456', '456'); -- Result: 1 SELECT ENDSWITH('0123456', '012'); -- Result: 0
FILESIZE(uri)
指定されたファイルパスのファイルに存在するバイト数を返します。
- uri:サイズを読み取るファイルのパス。
SELECT FILESIZE('C:/Users/User1/Desktop/myfile.txt'); -- Result: 23684
FORMAT(value [, parseFormat], format )
指定された書式で値をフォーマットして返します。
- value:フォーマットする文字列。
- format:日付や数値形式の出力構文を指定する文字列。
- parseFormat:日付値の入力構文を指定する文字列。整数型には適用されません。
SELECT FORMAT(12.34, '#'); -- Result: 12 SELECT FORMAT(12.34, '#.###'); -- Result: 12.34 SELECT FORMAT(1234, '0.000E0'); -- Result: 1.234E3 SELECT FORMAT('2019/01/01', 'yyyy-MM-dd'); -- Result: 2019-01-01 SELECT FORMAT('20190101', 'yyyyMMdd', 'yyyy-MM-dd'); -- Result: '2019-01-01'
FROM_UNIXTIME(time, issecond)
unix_timestamp 引数を、現在のタイムゾーンで表されたYYYY-MM-DD HH:MM:SS の値で返します。
- time:エポックタイムのタイムスタンプの値。ミリ秒が利用可能。
- issecond:タイムスタンプの値がミリ秒であるとエポックタイムに示す。
SELECT FROM_UNIXTIME(1540495231, 1); -- Result: 2018-10-25 19:20:31 SELECT FROM_UNIXTIME(1540495357385, 0); -- Result: 2018-10-25 19:22:37
HASHBYTES(algorithm, value)
指定されたアルゴリズムを使用して、入力値のハッシュをバイト配列として返します。サポートされているアルゴリズムはMD5、SHA1、SHA2_256、SHA2_512、SHA3_224、SHA3_256、SHA3_384、およびSHA3_512 です。
- algorithm:ハッシュ化に使用するアルゴリズム。MD5、SHA1、SHA2_256、SHA2_512、SHA3_224、SHA3_256、SHA3_384、またはSHA3_512 のいずれかでなければなりません。
- value:ハッシュする値。文字列またはバイト配列でなければなりません。
SELECT HASHBYTES('MD5', 'Test'); -- Result (byte array): 0x0CBC6611F5540BD0809A388DC95A615B
INDEXOF(expressionToSearch, expressionToFind [,start_location ])
指定した文字列式の開始位置を返します。
- expressionToSearch:検索対象となる文字式(通常は、カラム)。
- expressionToFind:検索対象の文字式。
- start_location:expressionToFind の検索を開始するexpressionToSearch 内の文字位置(オプション)。
SELECT INDEXOF('0123456', '456'); -- Result: 4 SELECT INDEXOF('0123456', '456', 5); -- Result: -1
ISNULL ( check_expression , replacement_value )
null を指定した置換値に置き換えます。
- check_expression:null かどうかをチェックされる式。
- replacement_value:check_expression がnull のときに返される式。
SELECT ISNULL(42, 'Was NULL'); -- Result: 42 SELECT ISNULL(NULL, 'Was NULL'); -- Result: 'Was NULL'
JSON_AVG(json, jsonpath)
JSON オブジェクト内のJSON 配列の平均値を計算します。配列へのパスはjsonpath 引数で指定します。戻り値は数値またはnull です。
- json:抽出するJSON ドキュメント。
- jsonpath:ノードを選択します。[x], [2..], [.8] または[1...12] のように使います。[x] はすべてのノードを選択します。
SELECT JSON_AVG('[1,2,3,4,5]', '$[x]'); -- Result: 3 SELECT JSON_AVG('{"test": {"data": [1,2,3,4,5]}}', '$.test.data[x]'); -- Result: 3 SELECT JSON_AVG('{"test": {"data": [1,2,3,4,5]}}', '$.test.data[3..]'); -- Result: 4.5
JSON_COUNT(json, jsonpath)
JSON オブジェクト内のJSON 配列のエレメント数を返します。配列へのパスはjsonpath 引数で指定します。戻り値は数値またはnull です。
- json:抽出するJSON ドキュメント。
- jsonpath:ノードを選択します。[x], [2..], [.8] または[1...12] のように使います。[x] はすべてのノードを選択します。
SELECT JSON_COUNT('[1,2,3,4,5]', '$[x]'); -- Result: 5 SELECT JSON_COUNT('{"test": {"data": [1,2,3,4,5]}}', '$.test.data[x]'); -- Result: 5 SELECT JSON_COUNT('{"test": {"data": [1,2,3,4,5]}}', '$.test.data[3..]'); -- Result: 2
JSON_EXTRACT(json, jsonpath)
JSON 配列またはオブジェクトのあらゆる値を選択します。配列へのパスはjsonpath 引数で指定します。戻り値は数値またはnull です。
- json:抽出するJSON ドキュメント。
- jsonpath:ノードの選択に使用するXPath。JSONPath は文字列定数である必要があります。選択されたノードの値は、トークンで区切られたリストの形式で返されます。
SELECT JSON_EXTRACT('{"test": {"data": 1}}', '$.test'); -- Result: '{"data":1}' SELECT JSON_EXTRACT('{"test": {"data": 1}}', '$.test.data'); -- Result: 1 SELECT JSON_EXTRACT('{"test": {"data": [1, 2, 3]}}', '$.test.data[1]'); -- Result: 2
JSON_MAX(json, jsonpath)
JSON オブジェクト内のJSON 配列の最大値を取得します。配列へのパスはjsonpath 引数で指定します。戻り値は数値またはnull です。
- json:抽出するJSON ドキュメント。
- jsonpath:ノードを選択します。[x], [2..], [.8] または[1...12] のように使います。[x] はすべてのノードを選択します。
SELECT JSON_MAX('[1,2,3,4,5]', '$[x]'); -- Result: 5 SELECT JSON_MAX('{"test": {"data": [1,2,3,4,5]}}', '$.test.data[x]'); -- Result: 5 SELECT JSON_MAX('{"test": {"data": [1,2,3,4,5]}}', '$.test.data[..3]'); -- Result: 4
JSON_MIN(json, jsonpath)
JSON オブジェクト内のJSON 配列の最小値を取得します。配列へのパスはjsonpath 引数で指定します。戻り値は数値またはnull です。
- json:抽出するJSON ドキュメント。
- jsonpath:ノードを選択します。[x], [2..], [.8] または[1...12] のように使います。[x] はすべてのノードを選択します。
SELECT JSON_MIN('[1,2,3,4,5]', '$[x]'); -- Result: 1 SELECT JSON_MIN('{"test": {"data": [1,2,3,4,5]}}', '$.test.data[x]'); -- Result: 1 SELECT JSON_MIN('{"test": {"data": [1,2,3,4,5]}}', '$.test.data[3..]'); -- Result: 4
JSON_SUM(json, jsonpath)
JSONPath 式に応じたJSON のサマリー値を計算します。戻り値は数値またはnull です。
- json:抽出するJSON ドキュメント。
- jsonpath:ノードを選択します。[x], [2..], [.8] または[1...12] のように使います。[x] はすべてのノードを選択します。
SELECT JSON_SUM('[1,2,3,4,5]', '$[x]'); -- Result: 15 SELECT JSON_SUM('{"test": {"data": [1,2,3,4,5]}}', '$.test.data[x]'); -- Result: 15 SELECT JSON_SUM('{"test": {"data": [1,2,3,4,5]}}', '$.test.data[3..]'); -- Result: 9
LEFT ( character_expression , integer_expression )
指定された文字列の左端から指定された数の文字を返します。
- character_expression:文字式。
- integer_expression:character_expression の左端から数えて何文字を返すかを指定する正の整数。
SELECT LEFT('1234567890', 3); -- Result: '123'
LEN(string_expression)
指定された文字列式の文字数を返します。
- string_expression:文字列式。
SELECT LEN('12345'); -- Result: 5
LOCATE(substring,string)
部分文字列が表示される文字列の文字数を表す整数を返します。
- substring:より大きな文字列内で検索する部分文字列。
- string:部分文字列を検索するより大きな文字列。
SELECT LOCATE('sample','XXXXXsampleXXXXX'); -- Result: 6
LOWER ( character_expression )
大文字データを小文字に変換した文字式を返します。
- character_expression:文字式。
SELECT LOWER('MIXED case'); -- Result: 'mixed case'
LTRIM(character_expression)
先頭の空白を除いた文字式を返します。
- character_expression:文字式。
SELECT LTRIM(' trimmed'); -- Result: 'trimmed'
MASK(string_expression, mask_character [, start_index [, end_index ]])
start_index とend_index の間の文字を文字列内のmask_character に置き換えます。
- string_expression:検索される文字列式。
- mask_character:マスクする文字。
- start_index:文字列の先頭でマスクされないままにする文字数(オプション)。デフォルトは0 です。
- end_index:文字列の最後でマスクされないままにする文字数(オプション)。デフォルトは0 です。
SELECT MASK('1234567890','*',); -- Result: '**********' SELECT MASK('1234567890','*', 4); -- Result: '1234******' SELECT MASK('1234567890','*', 4, 2); -- Result: '1234****90'
NCHAR(integer_expression)
Unicode 標準の定義に従って、指定された整数コードのUnicode 文字を返します。
- integer_expression:0 から255 までの整数。
OCTET_LENGTH(character_expression),
式内にあるバイト数を返します。
- character_expression:評価する文字のセット。
SELECT OCTET_LENGTH('text') FROM Account LIMIT 1 -- Result: 4
PATINDEX(pattern, expression)
式内に最初に見つかったパターンの開始位置を返します。パターンが見つからなかった場合は0を返します。
- pattern:発見すべきシーケンスを含む文字式。ワイルドカード文字% は、式の先頭または末尾でのみ使用できます。
- expression:パターンの検索対象となる式(通常は、カラム)。
SELECT PATINDEX('123%', '1234567890'); -- Result: 1 SELECT PATINDEX('%890', '1234567890'); -- Result: 8 SELECT PATINDEX('%456%', '1234567890'); -- Result: 4
POSITION(expressionToFind IN expressionToSearch)
指定した文字列式の開始位置を返します。
- expressionToFind:検索対象の文字式。
- expressionToSearch:検索対象となる文字式(通常は、カラム)。
SELECT POSITION('456' IN '123456'); -- Result: 4 SELECT POSITION('x' IN '123456'); -- Result: 0
QUOTENAME(character_string [, quote_character])
指定されたUnicode 文字列に必要な区切り記号を追加することで、有効なSQL Server の区切り付き識別子を返します。
- character_string:Unicode 文字データの文字列。文字列は128文字に制限されます。文字を128文字を超えて入力すると、null が返されます。
- quote_character:区切り記号として使用される1つの文字(オプション)。単一引用符、左または右の角かっこ、二重引用符のいずれかを指定できます。quote_character を指定しない場合は、角かっこが使用されます。
SELECT QUOTENAME('table_name'); -- Result: '[table_name]' SELECT QUOTENAME('table_name', '"'); -- Result: '"table_name"' SELECT QUOTENAME('table_name', '['); -- Result: '[table_name]'
REPLACE(string_expression, string_pattern, string_replacement)
見つかった文字列をすべて別の文字列に置換します。
- string_expression:検索される文字列式。文字またはバイナリデータ型を指定できます。
- string_pattern:検索されるサブ文字列。空の文字列を設定することはできません。
- string_replacement:置き換え後の文字列。
SELECT REPLACE('1234567890', '456', '|'); -- Result: '123|7890' SELECT REPLACE('123123123', '123', '.'); -- Result: '...' SELECT REPLACE('1234567890', 'a', 'b'); -- Result: '1234567890'
REPLICATE ( string_expression ,integer_expression )
文字列値を指定された回数だけ繰り返します。
- string_expression:繰り返す文字列。
- integer_expression:繰り返し回数。
SELECT REPLACE('x', 5); -- Result: 'xxxxx'
REVERSE ( string_expression )
文字列式を逆順序で返します。
- string_expression:文字列。
SELECT REVERSE('1234567890'); -- Result: '0987654321'
RIGHT ( character_expression , integer_expression )
文字列の右側から指定された数の文字を返します。
- character_expression:文字式。
- integer_expression:返される文字式の文字数を指定する正の整数。
SELECT RIGHT('1234567890', 3); -- Result: '890'
RTRIM(character_expression)
末尾の空白を削除した後の文字式を返します。
- character_expression:文字式。
SELECT RTRIM('trimmed '); -- Result: 'trimmed'
SOUNDEX(character_expression)
文字列の音声表現に基づいて、4文字のSoundex コードを返します。
- character_expression:文字データの英数字式。
SELECT SOUNDEX('smith'); -- Result: 'S530'
SPACE(repeatcount)
空白の繰り返しで構成される文字列を返します。
- repeatcount:空白文字の数。
SELECT SPACE(5); -- Result: ' '
SPLIT(string, delimiter, offset)
区切り文字の間の文字列のセクションを返します。
- string:分割する文字列。
- delimiter:文字列を分割する文字。
- offset:返す分割の数。正の数値は左からのオフセットとして扱われ、負の数値は右からのオフセットとして扱われます。
SELECT SPLIT('a/b/c/d', '/', 1); -- Result: 'a' SELECT SPLIT('a/b/c/d', '/', -2); -- Result: 'c'
STARTSWITH(character_expression, character_prefix)
character_expression がcharacter_prefix で始まる場合は1を、それ以外は0を返します。
- character_expression:文字式。
- character_prefix:検索する文字列のプレフィックス。
SELECT STARTSWITH('0123456', '012'); -- Result: 1 SELECT STARTSWITH('0123456', '456'); -- Result: 0
STR ( float_expression [ , integer_length [ , integer_decimal ] ] )
数値データから変換された文字データを返します。例えば、STR(123.45, 6, 1) は123.5 を返します。
- float_expression:浮動小数点型の式。
- length:返される長さの合計(オプション)。これには、小数点、符号、数字、および空白も含まれます。デフォルトは10です。
- decimal:小数点以下の桁数(オプション)。decimal には、16以下を指定する必要があります。
SELECT STR('123.456'); -- Result: '123' SELECT STR('123.456', 2); -- Result: '**' SELECT STR('123.456', 10, 2); -- Result: '123.46'
STUFF(character_expression , integer_start , integer_length , replaceWith_expression)
文字列を別の文字列内に挿入します。まず、最初の文字列の指定された開始位置から指定された長さの文字を削除し、次に、2番目の文字列を最初の文字列の指定された開始位置に挿入します。
- character_expression:文字列式。
- start:削除および挿入を開始する位置を指定する整数値。start またはlength が負の場合は、null が返されます。start が変更される文字列(character_expression)の長さを超える場合は、null が返されます。
- length:削除する文字数を指定する整数。length がcharacter_expression の長さを超える場合は、replaceWith_expression は最後の文字まで削除されます。
- replaceWith_expression:character_expression のstart 値の位置から始まるlength 文字数を置き換える文字データの式。
SELECT STUFF('1234567890', 3, 2, 'xx'); -- Result: '12xx567890'
SUBSTRING(string_value FROM start FOR length)
文字列のうち、指定されたインデックスから始まる指定された長さの部分を返します。
- string_value:文字列。
- start:返される文字の開始インデックスを指定する正の整数。
- length:オプション。返される文字数を指定する正の整数。
SELECT SUBSTRING('1234567890' FROM 3 FOR 2); -- Result: '34' SELECT SUBSTRING('1234567890' FROM 3); -- Result: '34567890'
TOSTRING(string_value1)
インスタンスの値を同様の文字列表現に変換します。
- string_value1:変換される文字列。
SELECT TOSTRING(123); -- Result: '123' SELECT TOSTRING(123.456); -- Result: '123.456' SELECT TOSTRING(null); -- Result: ''
TRIM(trimspec trimchar FROM string_value)
左および/または右の空白を除いた文字式を返します。
- trimspec:オプション。含める場合、BOTH、LEADING、TRAILING のいずれかの必要があります。
- trimchar:オプション。含める場合、一文字の文字列値にする必要があります。
- string_value:トリムする文字列値。
SELECT TRIM(' trimmed '); -- Result: 'trimmed' SELECT TRIM(LEADING FROM ' trimmed '); -- Result: 'trimmed ' SELECT TRIM('-' FROM '-----trimmed-----'); -- Result: 'trimmed' SELECT TRIM(BOTH '-' FROM '-----trimmed-----'); -- Result: 'trimmed' SELECT TRIM(TRAILING '-' FROM '-----trimmed-----'); -- Result: '-----trimmed'
UNICODE(ncharacter_expression)
インプット式の最初の文字のUnicode 標準で定義された整数の値を返します。
- ncharacter_expression:Unicode 文字式。
UPPER ( character_expression )
文字式の小文字データを大文字に変換して返します。
- character_expression:文字式。
SELECT UPPER('MIXED case'); -- Result: 'MIXED CASE'
XML_EXTRACT(xml, xpath [, separator])
指定されたXPath を使ってXML ドキュメントを抽出して、XML をフラット化します。デフォルトでは、出力の区切りにはカンマが使用されますが、これは3番目のパラメータを指定することで変更できます。
- xml:抽出するXML ドキュメント。
- xpath:ノードの選択に使用するXPath。選択されたノードの値は、トークンで区切られたリストの形式で返されます。
- separator:フラット化された応答の中で、項目の区切りとして使用されるトークン。指定しない場合は、区切り記号はカンマになります。
SELECT XML_EXTRACT('<vowels><ch>a</ch><ch>e</ch><ch>i</ch><ch>o</ch><ch>u</ch></vowels>', '/vowels/ch'); -- Result: 'a,e,i,o,u' SELECT XML_EXTRACT('<vowels><ch>a</ch><ch>e</ch><ch>i</ch><ch>o</ch><ch>u</ch></vowels>', '/vowels/ch', ';'); -- Result: 'a;e;i;o;u'