- 締切済み
ファンクション内での円マークについて
値をカンマ形式で変換するファンクションを作成しています。 ファンクションの内容は下記の通りです。 CREATE FUNCTION Test (DECIMAL) RETURNS VARCHAR(15) AS ' DECLARE arg ALIAS FOR $1; str VARCHAR(16); BEGIN str := ''''; SELECT TRIM(TO_CHAR(arg, ''\\9,999,999,999'')) INTO str; RETURN str; END; ' language 'plpgsql' ; 上記のコマンドを実行したらワーニングが出力されました。 下記が出力したワーニングの内容です。 WARNING: nonstandard use of \\ in a string literal 行 2: ' ^ HINT: Use the escape string syntax for backslashes, e.g., E'\\'. WARNING: nonstandard use of escape in a string literal 行 1: SELECT TRIM(TO_CHAR( $1 , '\9,999,999,999')) ^ HINT: Use the escape string syntax for escapes, e.g., E'\r\n'. QUERY: SELECT TRIM(TO_CHAR( $1 , '\9,999,999,999')) CONTEXT: SQL statement in PL/PgSQL function "test" near line 6 CREATE FUNCTION ※一応、ファンクションは作成できたんですで・・・ ファンクションを実行したらワーニングと結果が出力されました。 SELECT test(10000); 下記が出力したワーニングの内容です。 WARNING: nonstandard use of escape in a string literal 行 1: SELECT TRIM(TO_CHAR( $1 , '\9,999,999,999')) ^ HINT: Use the escape string syntax for escapes, e.g., E'\r\n'. QUERY: SELECT TRIM(TO_CHAR( $1 , '\9,999,999,999')) CONTEXT: PL/pgSQL function "test" line 6 at SQL statement test -------- 10,000 (1 行) 下記のように円マークの箇所にEをつけたりしましたがワーニングが解消する事はできませんでした。多分、私の記述がいけないような気がします。 すみませんがどのように記述すればいいのでしょうか。 ご教授いただけませんでしょうか。 宜しくお願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- nora1962
- ベストアンサー率60% (431/717)
バージョンが分かりませんがこんなんでとうですか。 CREATE or REPLACE FUNCTION Test (DECIMAL) RETURNS VARCHAR(15) AS $$ DECLARE arg ALIAS FOR $1; BEGIN RETURN TRIM(TO_CHAR(arg, E'FM\\9,999,999,999')); END; $$ language plpgsql;
補足
回答ありがとうございます。 説明不足で申し訳ありませんでした。 私が使用しているPostgreSQLのバージョンは下記の通りです。 PostgreSQL 8.4.9 on i386-redhat-linux-gnu, compiled by GCC gcc (GCC) 4.4.5 20110214 (Red Hat 4.4.5-6), 32-bit nara1962さんのいただいたアドバイスを元に下記のようにファンクションを修正して実行したらワーニングが発生しました。 ※ワーニングが発生しましたがファンクションは作成されました。 CREATE FUNCTION test (DECIMAL) RETURNS VARCHAR(15) AS ' DECLARE arg ALIAS FOR $1; str VARCHAR(16); BEGIN str := ''''; SELECT TRIM(TO_CHAR(arg, E''FM\\9,999,999,999'')) INTO str; RETURN str; END; ' language 'plpgsql' ; 下記が出力したワーニングの内容です。 WARNING: nonstandard use of \\ in a string literal 行 2: ' ^ HINT: Use the escape string syntax for backslashes, e.g., E'\\'. CREATE FUNCTION ファンクションを実行した結果です。 ※ワーニングは出力されませんでした。 SELECT test(10000); test -------- 10,000 (1 行) 再度、アドバイスいただけませんでしょうか。 宜しくお願いします。