31.4 OCI文字列操作関数
OCI文字列操作関数をリストし、説明します。
文字列の操作用に、2種類のデータ構造がサポートされています。
-
マルチバイト文字列
-
ワイドキャラクタ文字列
マルチバイト文字列は、システム固有のOracleキャラクタ・セットでエンコードされています。マルチバイト文字列で動作する関数は、バイト単位で計算された文字列の長さを使用して、文字列全体を1つの単位として使用します。ワイドキャラクタ(wchar
)文字列関数を使用すると、より柔軟に文字列を操作できます。この種の関数は、文字列の長さを文字数で計算し、文字ベースと文字列ベースの操作をサポートします。
ワイドキャラクタ・データ型はOracle固有のもので、ANSI/ISO C標準で定義されているwchar_t
データ型と混同しないでください。Oracleのワイドキャラクタ・データ型はすべてのオペレーティング・システムで常に4バイトですが、wchar_t
のサイズは実装およびオペレーティング・システムによって異なります。Oracleワイドキャラクタ・データ型は、マルチバイト文字を正規化するため、統一された固定幅になり、処理が簡単になります。これにより、Oracleのワイドキャラクタ・セットとシステム固有のキャラクタ・セット間でのラウンドトリップ変換の際、データが失われません。
文字列操作は、次のカテゴリに分類できます。
-
マルチバイト・キャラクタとワイド・キャラクタ間の文字列変換
-
文字の分類
-
大/小文字の変換
-
表示長の計算
-
比較、連結、検索などの一般的な文字列操作
表31-4は、この項で説明しているOCI文字列操作関数のサマリーを示しています。
表31-4 OCI文字列操作関数
関数 | 用途 |
---|---|
マルチバイト文字列の一部をワイドキャラクタ文字列に変換します。 |
|
マルチバイト文字列を指定された大/小文字に変換し、結果を宛先配列にコピーします。 |
|
マルチバイト文字列を宛先文字列に追加します。 |
|
2つのマルチバイト文字列を、バイナリ、言語または大/小文字を区別しない比較メソッドを使用して比較します。 |
|
マルチバイト文字列を宛先配列にコピーします。これは、コピーされたバイト数を戻します。 |
|
マルチバイト文字列のバイト数を戻します。 |
|
マルチバイト文字列を宛先文字列にnバイト以内で追加します。 |
|
2つのマルチバイト文字列を、バイナリ、言語または大/小文字を区別しない比較メソッドを使用して比較します。各文字列は指定された長さの範囲内です。 |
|
指定されたバイト数のマルチバイト文字列を宛先配列にコピーします。 |
|
マルチバイト文字列が占める表示位置のバイト数を、nバイト以内で戻します。 |
|
|
|
ワイドキャラクタ文字列の一部をマルチバイト文字列に変換します。 |
|
マルチバイト・エンコーディングの際、ワイドキャラクタで必要なバイト数を判断します。 |
|
ワイドキャラクタ文字列を指定された大/小文字に変換し、結果を宛先配列にコピーします。 |
|
ワイドキャラクタ文字列を宛先文字列に追加します。 |
|
文字列内にある最初のワイド・キャラクタを検索します。検索が正常終了すると、ワイド・キャラクタへのポインタを戻します。 |
|
2つのワイドキャラクタ文字列を、バイナリ、言語または大/小文字を区別しない比較メソッドを使用して比較します。 |
|
ワイドキャラクタ文字列を宛先配列にコピーします。次に、コピーされた文字数を戻します。 |
|
ワイドキャラクタ文字列の文字数を戻します。 |
|
ワイドキャラクタ文字列を宛先文字列にn文字以内で追加します。 |
|
2つのワイドキャラクタ文字列を、バイナリ、言語または大/小文字を区別しないメソッドを使用して比較します。各文字列は指定された長さです。 |
|
ワイドキャラクタ文字列を宛先配列にn文字以内でコピーします。 |
|
ワイドキャラクタ文字列内にある最後の文字を検索します。 |
|
指定されたワイド・キャラクタを対応する小文字に変換します。 |
|
|
|
指定されたワイド・キャラクタを対応する大文字に変換します。 |
31.4.1 OCIMultiByteInSizeToWideChar()
マルチバイト文字列の一部をワイドキャラクタ文字列に変換します。
用途
マルチバイト文字列の一部をワイドキャラクタ文字列に変換します。
構文
sword OCIMultiByteInSizeToWideChar ( void *hndl, OCIWchar *dst, size_t dstsz, const OraText *src, size_t srcsz, size_t *rsize );
パラメータ
- hndl (IN/OUT)
-
文字列のキャラクタ・セットを判断するOCI環境ハンドルまたはユーザー・セッション・ハンドルです。
- dst (OUT)
-
宛先バッファへの
wchar
のポインタです。dstsz
が0 (ゼロ)の場合、NULL
ポインタを使用できます。 - dstsz (IN)
-
文字数単位で示した宛先バッファ・サイズです。0 (ゼロ)の場合、変換に必要な文字数が戻されます。
- src (IN)
-
変換対象のソース文字列です。
- srcsz (IN)
-
バイトで示したソース文字列の長さです。
- rsize (OUT)
-
宛先バッファに書き込まれる文字数です。または、
dstsz
が0 (ゼロ)の場合、変換された文字列の文字数です。NULL
ポインタの場合、何も戻されません。
コメント
このルーチンは、マルチバイト文字列の一部をワイドキャラクタ文字列に変換します。出力バッファ・サイズの制限か入力バッファ・サイズの制限に達するまで、またはソース文字列でNULL
終端文字が出現するまで、何文字でも文字をすべて変換します。出力バッファは、領域に余裕がある場合、NULL
で終了します。dstsz
が0(ゼロ)の場合、NULL
終端文字を含まない、変換文字列に必要な文字数のみ戻されます。OCIEnvNlsCreate()
関数のSQL CHAR
データにOCI_UTF16ID
が指定されている場合、エラーが発生します。
戻り値
OCI_SUCCESS
、OCI_INVALID_HANDLE
またはOCI_ERROR
。
31.4.2 OCIMultiByteStrCaseConversion()
マルチバイト文字列を指定された大/小文字に変換し、結果を宛先配列にコピーします。
用途
srcstr
が指し示すマルチバイト文字列を大文字または小文字(フラグによって指定)に変換し、その結果を、dststr
が指し示す配列にコピーします。
構文
size_t OCIMultiByteStrCaseConversion ( void *hndl, OraText *dststr, const OraText *srcstr, ub4 flag );
パラメータ
- hndl (IN/OUT)
-
OCI環境ハンドルまたはユーザー・セッション・ハンドルです。
- dststr (OUT)
-
宛先配列へのポインタです。結果の文字列は、
NULL
で終了します。 - srcstr (IN)
-
ソース文字列へのポインタです。
- flag (IN)
-
大文字または小文字のいずれに変換するかを指定します。
-
OCI_NLS_UPPERCASE
: 大文字に変換します。 -
OCI_NLS_LOWERCASE
: 小文字に変換します。
このフラグをOCI_NLS_LINGUISTIC
とともに使用すると、ロケールの言語設定を大/小文字の変換に使用するよう指定できます。
コメント
OCIEnvNlsCreate()
関数のSQL CHAR
データにOCI_UTF16ID
が指定されている場合、エラーが発生します。
戻り値
NULL
終端文字を含まない結果文字列のバイト数。
31.4.3 OCIMultiByteStrcat()
マルチバイト文字列を宛先文字列に追加します。
用途
srcstr
が指し示すマルチバイト文字列のコピーを、dststr
が指し示す文字列の最後に追加します。
構文
size_t OCIMultiByteStrcat ( void *hndl, OraText *dststr, const OraText *srcstr );
パラメータ
コメント
OCIEnvNlsCreate()
関数のSQL CHAR
データにOCI_UTF16ID
が指定されている場合、エラーが発生します。
戻り値
NULL
終端文字を含まない結果文字列のバイト数。
31.4.4 OCIMultiByteStrcmp()
2つのマルチバイト・キャラクタ文字列を、バイナリ、言語または大/小文字を区別しない比較方法で比較します。
用途
2つのマルチバイト・キャラクタ文字列を、バイナリ、言語または大/小文字を区別しない比較方法で比較します。
構文
int OCIMultiByteStrcmp ( void *hndl, const OraText *str1, const OraText *str2, int flag );
パラメータ
- hndl (IN/OUT)
-
OCI環境ハンドルまたはユーザー・セッション・ハンドルです。
- str1 (IN)
-
NULL
で終了する文字列へのポインタです。 - str2 (IN)
-
NULL
で終了する文字列へのポインタです。 - flag (IN)
-
比較メソッドを決定するために使用されます。次のいずれかの値です。
-
OCI_NLS_BINARY
: バイナリ比較。これがデフォルト値です。 -
OCI_NLS_LINGUISTIC
: ロケールで指定された言語比較。
このフラグをOCI_NLS_CASE_INSENSITIVE
とともに使用することにより、大/小文字を区別しない比較を実行できます。たとえば、大/小文字を区別せずに文字列の言語を比較するには、OCI_NLS_LINGUISTIC|OCI_NLS_CASE_INSENSITIVE
を使用します。
コメント
OCIEnvNlsCreate()
関数のSQL CHAR
データにOCI_UTF16ID
が指定されている場合、エラーが発生します。
戻り値
関数の戻り値は次のとおりです。
-
0 (
str1 = str2
の場合) -
正(
str1 > str2
の場合) -
負(
str1 < str2
の場合)
31.4.5 OCIMultiByteStrcpy()
マルチバイト文字列を宛先配列にコピーします。これは、コピーされたバイト数を戻します。
用途
srcstr
が指し示すマルチバイト文字列を、dststr
が指し示す配列にコピーします。
構文
size_t OCIMultiByteStrcpy ( void *hndl, OraText *dststr, const OraText *srcstr );
パラメータ
コメント
OCIEnvNlsCreate()
関数のSQL CHAR
データにOCI_UTF16ID
が指定されている場合、エラーが発生します。
戻り値
NULL
終端文字を含まない、コピーされるバイト数。
31.4.6 OCIMultiByteStrlen()
マルチバイト文字列のバイト数を戻します。
用途
str
が指し示すマルチバイト文字列のバイト数(NULL
終端文字を含まない)を戻します。
構文
size_t OCIMultiByteStrlen ( void *hndl, const OraText *str );
コメント
OCIEnvNlsCreate()
関数のSQL CHAR
データにOCI_UTF16ID
が指定されている場合、エラーが発生します。
戻り値
NULL
終端文字を含まないバイト数。
31.4.7 OCIMultiByteStrncat()
マルチバイト文字列を宛先文字列にnバイト以内で追加します。
用途
指定されたバイト数をマルチバイト文字列から宛先文字列に追加します。
構文
size_t OCIMultiByteStrncat ( void *hndl, OraText *dststr, const OraText *srcstr, size_t n );
パラメータ
コメント
この関数は、OCIMultiByteStrcat()
と類似しています。srcstr
から最大nバイトがdststr
に追加されます。srcstr
のNULL
終端文字によって追加が終了され、n
バイト以内で関数は可能な数の文字を追加します。dststr
パラメータはNULL
で終了します。OCIEnvNlsCreate()
関数のSQL CHAR
データにOCI_UTF16ID
が指定されている場合、エラーが発生します。
戻り値
NULL
終端文字を含まない結果文字列のバイト数。
31.4.8 OCIMultiByteStrncmp()
2つのマルチバイト・キャラクタ文字列を、バイナリ、言語または大/小文字を区別しない比較方法で比較します。各文字列は指定された長さの範囲内です。
用途
2つのマルチバイト・キャラクタ文字列を、バイナリ、言語または大/小文字を区別しない比較方法で比較します。各文字列の長さは指定されています。
構文
int OCIMultiByteStrncmp ( void *hndl, const OraText *str1, size_t len1, OraText *str2, size_t len2, int flag );
パラメータ
- hndl (IN/OUT)
-
OCI環境ハンドルまたはユーザー・セッション・ハンドルです。
- str1 (IN)
-
最初の文字列へのポインタです。
- len1 (IN)
-
比較する最初の文字列の長さです。
- str2 (IN)
-
2番目の文字列へのポインタです。
- len2 (IN)
-
比較する2番目の文字列の長さです。
- flag (IN)
-
比較メソッドを決定するために使用されます。次のいずれかの値です。
-
OCI_NLS_BINARY
: バイナリ比較。これはデフォルト値です。 -
OCI_NLS_LINGUISTIC
: ロケールで指定された言語比較。
このフラグをOCI_NLS_CASE_INSENSITIVE
とともに使用することにより、大/小文字を区別しない比較を実行できます。たとえば、大/小文字を区別せずに文字列の言語を比較するには、OCI_NLS_LINGUISTIC|OCI_NLS_CASE_INSENSITIVE
を使用します。
コメント
この関数はOCIMultiByteStrcmp()
と類似していますが、最大str1
からlen1
バイト、str2
からlen2
バイトが比較される点が異なります。比較では、NULL
終端文字が使用されます。OCIEnvNlsCreate()
関数のSQL CHAR
データにOCI_UTF16ID
が指定されている場合、エラーが発生します。
戻り値
関数の戻り値は次のとおりです。
-
0 (
str1
=str2
の場合) -
正(
str1
>str2
の場合) -
負(
str1
<str2
の場合)
31.4.9 OCIMultiByteStrncpy()
指定されたバイト数のマルチバイト文字列を宛先配列にコピーします。
用途
マルチバイト文字列を配列にコピーします。
構文
size_t OCIMultiByteStrncpy ( void *hndl, OraText *dststr, const OraText *srcstr, size_t n );
パラメータ
コメント
この関数は、OCIMultiByteStrcpy()
と類似しています。ただし、srcstr
が指し示す配列からdststr
が指し示す配列にコピーされるのは、最大nバイトです。srcstr
のNULL
終端文字によってコピーが終了され、n
バイト以内で関数は可能な数の文字をコピーします。結果の文字列は、NULL
で終了します。OCIEnvNlsCreate()
関数のSQL CHAR
データにOCI_UTF16ID
が指定されている場合、エラーが発生します。
戻り値
NULL
終端文字を含まない結果文字列のバイト数。
31.4.10 OCIMultiByteStrnDisplayLength()
マルチバイト文字列が占める表示位置のバイト数を、nバイト以内で戻します。
用途
マルチバイト文字列が占める表示位置のバイト数を、n
バイト以内で戻します。
構文
size_t OCIMultiByteStrnDisplayLength ( void *hndl, const OraText *str1, size_t n );
コメント
OCIEnvNlsCreate()
関数のSQL CHAR
データにOCI_UTF16ID
が指定されている場合、エラーが発生します。
戻り値
表示位置の数です。
関連トピック
31.4.11 OCIMultiByteToWideChar()
NULL
で終了するマルチバイト文字列をワイドキャラクタ形式に変換します。
用途
NULL
で終了する文字列全体をワイドキャラクタ文字列に変換します。
構文
sword OCIMultiByteToWideChar ( void *hndl, OCIWchar *dst, const OraText *src, size_t *rsize );
パラメータ
コメント
wchar
出力バッファは、NULL
で終了します。OCIEnvNlsCreate()
関数のSQL CHAR
データにOCI_UTF16ID
が指定されている場合、エラーが発生します。
戻り値
OCI_SUCCESS
、OCI_INVALID_HANDLE
またはOCI_ERROR
。
31.4.12 OCIWideCharInSizeToMultiByte()
ワイドキャラクタ文字列の一部をマルチバイト文字列に変換します。
用途
ワイドキャラクタ文字列の一部をマルチバイト形式に変換します。
構文
sword OCIWideCharInSizeToMultiByte ( void *hndl, OraText *dst, size_t dstsz, const OCIWchar *src, size_t srcsz, size_t *rsize );
パラメータ
- hndl (IN/OUT)
-
文字列のキャラクタ・セットを判断するOCI環境ハンドルまたはユーザー・セッション・ハンドルです。
- dst (OUT)
-
マルチバイトの宛先バッファです。
dstsz
が0(ゼロ)の場合、NULL
ポインタを使用できます。 - dstsz (IN)
-
バイト単位で示した宛先バッファ・サイズです。0 (ゼロ)の場合、変換文字列に必要なサイズがバイト単位で戻されます。
- src (IN)
-
変換対象のソース
wchar
文字列です。 - srcsz (IN)
-
文字で示したソース文字列の長さです。
- rsize (OUT)
-
宛先バッファに書き込まれるバイト数です。または、
dstsz
が0 (ゼロ)の場合、変換された文字列を格納するのに必要なバイト数です。NULL
ポインタの場合、何も戻されません。
コメント
ワイドキャラクタ文字列の一部をマルチバイト形式に変換します。出力バッファ・サイズか入力バッファ・サイズに達するまで、またはソース文字列でNULL
終端文字が出現するまで、何文字でも文字をすべて変換します。出力バッファは、領域に余裕がある場合、NULL
で終了します。dstsz
が0 (ゼロ)の場合、NULL
終端文字を含まない、変換された文字列の格納に必要なサイズがバイト単位で戻されます。OCIEnvNlsCreate()
関数のSQL CHAR
データにOCI_UTF16ID
が指定されている場合、エラーが発生します。
戻り値
OCI_SUCCESS
、OCI_INVALID_HANDLE
またはOCI_ERROR
。
関連トピック
31.4.13 OCIWideCharMultiByteLength()
マルチバイト・エンコーディングの際、ワイドキャラクタで必要なバイト数を判断します。
用途
マルチバイト・エンコーディングの際、ワイドキャラクタで必要なバイト数を判断します。
構文
size_t OCIWideCharMultiByteLength ( void *hndl, OCIWchar wc );
コメント
関数のSQL CHAR
データにOCI_UTF16ID
が指定されている場合、エラーが発生します。
戻り値
ワイドキャラクタに必要なバイト数です。
関連トピック
31.4.14 OCIWideCharStrCaseConversion()
ワイドキャラクタ文字列を指定された大/小文字に変換し、結果を宛先配列にコピーします。
用途
ワイドキャラクタ文字列を指定された大/小文字に変換し、結果を宛先配列にコピーします。
構文
size_t OCIWideCharStrCaseConversion ( void *hndl, OraText *dststr, const OraText *srcstr, ub4 flag );
パラメータ
- hndl (IN/OUT)
-
OCI環境ハンドルまたはユーザー・セッション・ハンドルです。
- dststr (OUT)
-
宛先配列へのポインタです。結果の文字列は、
NULL
で終了します。 - srcstr (IN)
-
ソース文字列へのポインタです。
- flag (IN)
-
大文字または小文字のいずれに変換するかを指定します。
-
OCI_NLS_UPPERCASE
: 大文字に変換します。 -
OCI_NLS_LOWERCASE
: 小文字に変換します。
このフラグをOCI_NLS_LINGUISTIC
とともに使用すると、ロケールの言語設定を大/小文字の変換に使用するよう指定できます。
コメント
srcstr
が指し示すワイドキャラクタ文字列を大文字または小文字(フラグによって指定)に変換し、その結果を、dststr
が指し示す配列にコピーします。OCIEnvNlsCreate()
関数のSQL CHAR
データにOCI_UTF16ID
が指定されている場合、エラーが発生します。
戻り値
NULL
終端文字を含まない結果文字列のバイト数。
関連トピック
31.4.15 OCIWideCharStrcat()
ワイドキャラクタ文字列を宛先文字列に追加します。
用途
wsrcstr
が指し示すワイドキャラクタ文字列を、wdststr
が指し示すワイドキャラクタ文字列に追加します。
構文
size_t OCIWideCharStrcat ( void *hndl, OCIWchar *wdststr, const OCIWchar *wsrcstr );
パラメータ
コメント
OCIEnvNlsCreate()
関数のSQL CHAR
データにOCI_UTF16ID
が指定されている場合、エラーが発生します。
戻り値
NULL
終端文字を含まない結果文字列の文字数。
31.4.16 OCIWideCharStrchr()
文字列内にある最初のワイド・キャラクタを検索します。検索が正常終了すると、ワイド・キャラクタへのポインタを戻します。
用途
ワイドキャラクタ文字列内にある最初の指定された文字を検索します。
構文
OCIWchar *OCIWideCharStrchr ( void *hndl, const OCIWchar *wstr, OCIWchar wc );
パラメータ
コメント
OCIEnvNlsCreate()
関数のSQL CHAR
データにOCI_UTF16ID
が指定されている場合、エラーが発生します。
戻り値
成功した場合はwchar
ポインタ、そうでない場合はNULL
ポインタです。
31.4.17 OCIWideCharStrcmp()
2つのワイドキャラクタ文字列を、バイナリ、言語または大/小文字を区別しない比較メソッドを使用して比較します。
用途
2つのワイドキャラクタ文字列を、バイナリ(wchar
エンコーディング値に基づく)、言語または大/小文字を区別しない比較メソッドを使用して比較します。
構文
int OCIWideCharStrcmp ( void *hndl, const OCIWchar *wstr1, const OCIWchar *wstr2, int flag );
パラメータ
- hndl (IN/OUT)
-
キャラクタ・セットを判断するOCI環境ハンドルまたはユーザー・セッション・ハンドルです。
- wstr1 (IN)
-
NULL
で終了するwchar
文字列へのポインタ。 - wstr2 (IN)
-
NULL
で終了するwchar
文字列へのポインタ。 - flag (IN)
-
比較メソッドを決定するために使用されます。次のいずれかの値です。
-
OCI_NLS_BINARY
: バイナリ比較。これはデフォルト値です。 -
OCI_NLS_LINGUISTIC
: ロケール定義で指定された言語比較。
このフラグをOCI_NLS_CASE_INSENSITIVE
とともに使用することにより、大/小文字を区別しない比較を実行できます。たとえば、大/小文字を区別せずに文字列の言語を比較するには、OCI_NLS_LINGUISTIC|OCI_NLS_CASE_INSENSITIVE
を使用します。
OCIWideCharStrcmp()
では、指定されたワイドキャラクタ引数の言語比較を実行するためにUNICODE_BINARYソート方法は使用できません。
コメント
OCIEnvNlsCreate()
関数のSQL CHAR
データにOCI_UTF16ID
が指定されている場合、エラーが発生します。
戻り値
関数の戻り値は次のとおりです。
-
0 (
wstr1 = wstr2
の場合) -
正(
wstr1 > wstr2
の場合) -
負(
wstr1 < wstr2
の場合)
31.4.18 OCIWideCharStrcpy()
ワイドキャラクタ文字列を宛先配列にコピーします。次に、コピーされた文字数を戻します。
用途
ワイドキャラクタ文字列を配列にコピーします。
構文
size_t OCIWideCharStrcpy ( void *hndl, OCIWchar *wdststr, const OCIWchar *wsrcstr );
パラメータ
コメント
OCIEnvNlsCreate()
関数のSQL CHAR
データにOCI_UTF16ID
が指定されている場合、エラーが発生します。
戻り値
NULL
終端文字を含まない、コピーされる文字数。
31.4.19 OCIWideCharStrlen()
ワイドキャラクタ文字列の文字数を戻します。
用途
ワイドキャラクタ文字列の文字数を戻します。
構文
size_t OCIWideCharStrlen ( void *hndl, const OCIWchar *wstr );
コメント
wstr
が指し示すwchar
文字列の文字数(NULL
終端文字を含まない)を戻します。OCIEnvNlsCreate()
関数のSQL CHAR
データにOCI_UTF16ID
が指定されている場合、エラーが発生します。
戻り値
NULL
終端文字を含まない文字数。
関連トピック
31.4.20 OCIWideCharStrncat()
ワイドキャラクタ文字列を宛先文字列にn文字以内で追加します。
用途
ワイドキャラクタ文字列を宛先にn文字以内で追加します。
構文
size_t OCIWideCharStrncat ( void *hndl, OCIWchar *wdststr, const OCIWchar *wsrcstr, size_t n );
パラメータ
コメント
この関数は、OCIWideCharStrcat()
と類似しています。wsrcstr
から最大n文字がwdststr
に追加されます。wsrcstr
のNULL
終端文字によって追加が終了されます。wdststr
パラメータはNULL
で終了します。OCIEnvNlsCreate()
関数のSQL CHAR
データにOCI_UTF16ID
が指定されている場合、エラーが発生します。
戻り値
NULL
終端文字を含まない結果文字列の文字数。
31.4.21 OCIWideCharStrncmp()
2つのワイドキャラクタ文字列を、バイナリ、言語または大/小文字を区別しないメソッドを使用して比較します。各文字列は指定された長さです。
用途
2つのワイドキャラクタ文字列を、バイナリ、言語または大/小文字を区別するメソッドを使用して比較します。各文字列は長さが指定されています。
構文
int OCIWideCharStrncmp ( void *hndl, const OCIWchar *wstr1, size_t len1, const OCIWchar *wstr2, size_t len2, int flag );
パラメータ
- hndl (IN/OUT)
-
キャラクタ・セットを判断するOCI環境ハンドルまたはユーザー・セッション・ハンドルです。
- wstr1 (IN)
-
最初の
wchar
文字列へのポインタです。 - len1 (IN)
-
比較する最初の文字列の長さです。
- wstr2 (IN)
-
2番目の
wchar
文字列へのポインタです。 - len2 (IN)
-
比較する2番目の文字列の長さです。
- flag (IN)
-
比較メソッドを決定するために使用されます。次のいずれかの値です。
-
OCI_NLS_BINARY
: バイナリ比較の場合。これがデフォルト値です。 -
OCI_NLS_LINGUISTIC
: ロケールで指定された言語比較の場合。
このフラグをOCI_NLS_CASE_INSENSITIVE
とともに使用することにより、大/小文字を区別しない比較を実行できます。たとえば、大/小文字を区別せずに文字列の言語を比較するには、OCI_NLS_LINGUISTIC
|OCI_NLS_CASE_INSENSITIVE
を使用します。
コメント
この関数は、OCIWideCharStrcmp()
と類似しています。2つのワイドキャラクタ文字列を、バイナリ、言語または大/小文字を区別しない比較メソッドを使用して比較します。wstr1
から最大len1
バイト、wstr2
から最大len2
バイトが比較されます。比較では、NULL
終端文字が使用されます。OCIEnvNlsCreate()
関数のSQL CHAR
データにOCI_UTF16ID
が指定されている場合、エラーが発生します。
OCIWideCharStrncmp()
では、指定されたワイドキャラクタ引数の言語比較を実行するためにUNICODE_BINARYソート方法は使用できません。
戻り値
関数の戻り値は次のとおりです。
-
0 (
wstr1 = wstr2
の場合) -
正(
wstr1 > wstr2
の場合) -
負(
wstr1 < wstr2
の場合)
31.4.22 OCIWideCharStrncpy()
ワイドキャラクタ文字列を宛先配列にn文字以内でコピーします。
用途
ワイドキャラクタ文字列を宛先にn文字以内でコピーします。
構文
size_t OCIWideCharStrncpy ( void *hndl, OCIWchar *wdststr, const OCIWchar *wsrcstr, size_t n );
パラメータ
コメント
この関数は、OCIWideCharStrcpy()
と類似しています。ただし、wsrcstr
が指し示す配列からwdststr
が指し示す配列にコピーされるのは、最大n文字です。wdststr
内のNULL
終端文字に達するとコピーが停止され、生成される文字列の最後はNULL
です。OCIEnvNlsCreate()
関数のSQL CHAR
データにOCI_UTF16ID
が指定されている場合、エラーが発生します。
戻り値
NULL
終端文字を含まない、コピーされる文字数。
31.4.23 OCIWideCharStrrchr()
ワイドキャラクタ文字列内にある最後の文字を検索します。
用途
ワイドキャラクタ文字列内にある最後の文字を検索します。
構文
OCIWchar *OCIWideCharStrrchr ( void *hndl, const OCIWchar *wstr, OCIWchar wc );
パラメータ
コメント
wstr
が指し示すwchar
文字列内にある最後のwc
を検索します。OCIEnvNlsCreate()
関数のSQL CHAR
データにOCI_UTF16ID
が指定されている場合、エラーが発生します。
戻り値
成功した場合はwchar
ポインタ、そうでない場合はNULL
ポインタです。
31.4.24 OCIWideCharToLower()
指定されたワイド・キャラクタを対応する小文字に変換します。
用途
wc
によって指定されたワイドキャラクタ文字列を、指定されたロケールの対応する小文字(存在する場合)に変換します。対応する小文字が存在しない場合、wc
そのものが戻されます。
構文
OCIWchar OCIWideCharToLower ( void *hndl, OCIWchar wc );
コメント
OCIEnvNlsCreate()
関数のSQL CHAR
データにOCI_UTF16ID
が指定されている場合、エラーが発生します。
戻り値
wchar
です。
31.4.25 OCIWideCharToMultiByte()
NULL
で終了するワイドキャラクタ文字列をマルチバイト文字列に変換します。
用途
NULL
で終了するワイドキャラクタ文字列全体をマルチバイト文字列に変換します。
構文
sword OCIWideCharToMultiByte ( void *hndl, OraText *dst, const OCIWchar *src, size_t *rsize );
パラメータ
コメント
OCIEnvNlsCreate()
関数のSQL CHAR
データにOCI_UTF16ID
が指定されている場合、エラーが発生します。
戻り値
OCI_SUCCESS
、OCI_INVALID_HANDLE
またはOCI_ERROR
。