Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

%STRING

非推奨。文字を STRING 照合形式に変換する照合関数です。

Synopsis

%STRING(expression[,maxlen])
%STRING expression

引数

expression 列名、文字リテラル、または他の関数の結果を指定できる文字列式。基本となるデータ型は、任意の文字タイプ (CHAR や VARCHAR2 など) とすることができます。expression にはサブクエリを指定できます。
maxlen オプション — 照合された値が、maxlen の値までに切り捨てられることを指定する整数。maxlen には、追加されている先頭の空白が含まれることに注意してください。((maxlen)) のように二重括弧で maxlen を囲むと、リテラル置換を抑制できます。

概要

この照合関数はお勧めしません。新規開発については、"%SQLSTRING" (大文字/小文字を区別する文字列比較) または "%SQLUPPER" (大文字/小文字を区別しない文字列比較) を参照してください。

%STRING は、expression を STRING 形式に変換します。

  • すべての文字を大文字に変換します。

  • 句読点文字は、コンマ以外すべて削除します。(%ALPHAUP は、コンマと疑問符以外のすべての句読点文字を削除します。)

  • すべての空白 (先頭、末尾、埋め込み) を削除します。

  • 値の最初の部分にスペースを 1 つ追加します。それによって、数値データと NULL 値を文字列として解釈させます。

SQL は、数値を関数に渡す前に、その数値をキャノニック形式に変換します。次に、%STRING がピリオド (多くのロケールで小数点区切り文字として使用) やマイナス記号をはじめとする句読点文字と空白を削除します。このため、%STRING をアルファベット以外の文字を含む式で使用するには注意が必要です。

%STRING がすべての値に空白を追加するため、NULL 値を文字列長 1 を持つ空白として照合します。%STRING は空白 (スペース、タブなど) だけを含む値を SQL 空文字列 ('')として照合します。%STRING が、空文字列 (長さがゼロ) に空白を追加すると、空文字列 $CHAR(0) の内部表現が追加された空白として照合し、文字列長 2 という結果になります。

オプションの maxlen トランケーション引数は、Caché 添え字で 255 文字制限を超える文字列に対しインデックスを指定するときに特に便利です。Caché 以外のシステムから変換する際、VARCHAR(255) のインデックスを付け、次にデータをテーブルに挿入しようとして、問題が生じることがありました。maxlen 引数では、長いフィールドにインデックスを指定する必要がある場合、トランケーション・レングス・パラメータを持つ STRING 照合を使用できます。%STRING は、expression の変換後に maxlen での切り捨てを実行します。変換された expression よりも maxlen の長さが長い場合は、パディングは追加されません。

%STRING は、Caché SQL の拡張機能であり、SQL 検索クエリ用として使用するものです。

%SYSTEM.UtilOpens in a new tab クラスの Collation()Opens in a new tab メソッドを使用すると、ObjectScript で同じ照合変換を実行できます。

  WRITE $SYSTEM.Util.Collation("The quick, BROWN fox.",9)

この関数は、ObjectScript から STRING()Opens in a new tab メソッド呼び出しを使用して呼び出すこともできます。

  WRITE $SYSTEM.SQL.STRING("The quick, BROWN fox.")

これらのメソッドの両方で、STRING 変換後の切り捨てがサポートされます。切り捨てられた長さには、追加された空白も含まれます。

  WRITE $SYSTEM.Util.Collation("The quick, BROWN fox.",9,6),!
  WRITE $SYSTEM.SQL.STRING("The quick, BROWN fox.",6)

%SQLUPPER 関数は、大文字と小文字を区別しない比較または照合に対してデータ値を変換する、SQL で優先的な方法です。ケース変換関数の詳細は、"%SQLUPPER" を参照してください。

以下の例は、“od” で始まる Name の値を選択します。

SELECT Name
FROM Sample.Person
WHERE %STRING(Name) %STARTSWITH %STRING 'od'

%STRING は句読点と空白を削除して大文字と小文字を区別せずに照合を実行するので、この例は ”Odem”、O'Donnell”、“ODonnell”、および “O Donnell” などの名前を返します。

以下の例は、%STRING を文字列トランケーションと共に使用して、大文字の各名前の最初の 2 文字を返します。文字列トランケーションは、%STRING が先頭の空白を追加するため、3 (2 ではなく) になります。ORDER BY 節は、この 2 文字フィールドを使用して、行におおまかな照合順を配置します。

SELECT Name, %STRING(Name,3) AS FirstTwo
FROM Sample.Person
ORDER BY FirstTwo

以下の例では、%STRING をサブクエリに適用しています。

SELECT TOP 5 Name, %STRING((SELECT Name FROM Sample.Company),10) AS Company
FROM Sample.Person

英数字の照合順序

大小文字変換関数は、以下のような異なるアルゴリズムを使用して数字で始まるデータ値を照合します。

%ALPHAUP および %STRING %SQLUPPER%SQLSTRING、およびその他の大小文字変換関数
5988 Clinton Avenue, 6023 Washington Court, 6090 Elm Court, 6185 Clinton Drive, 6209 Clinton Street, 6284 Oak Drive, 6310 Franklin Street, 6406 Maple Place, 641 First Place, 6572 First Avenue, 6643 First Street, 665 Ash Drive, 66 Main Street, 672 Main Court, 6754 Oak Court, 6986 Madison Blvd, 6 Oak Avenue, 7000 Ash Court, 709 Oak Avenue 5988 Clinton Avenue, 6 Oak Avenue, 6023 Washington Court, 6090 Elm Court, 6185 Clinton Drive, 6209 Clinton Street, 6284 Oak Drive, 6310 Franklin Street, 6406 Maple Place, 641 First Place, 6572 First Avenue, 66 Main Street, 6643 First Street, 665 Ash Drive, 672 Main Court, 6754 Oak Court, 6986 Madison Blvd, 7000 Ash Court, 709 Oak Avenue

関連項目

FeedbackOpens in a new tab