3

テーブルにミディアムテキストデータを保存したいのですが、これが私のコードです。

concat('{\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\fnil\fcharset0 Arial;}}\viewkind4\uc1\pard\fs18','1','\par }')

rtf のはずですが、実行するとこうなります。

{
tf1ansiansicpg1252deff0deflang1033{fonttbl{f0fnilfcharset0 Arial;}}viewkind4uc1pardfs181par }

次のようになります。

{\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\fnil\fcharset0 Arial;}}\viewkind4\uc1\pard\fs181\par }

「\」マークが消えるのですが、どなたか方法をご存知ないでしょうか?

4

2 に答える 2

3

バックスラッシュ ( \) はエスケープ文字として使用されます。これは、次の文字を特別な方法で処理する必要があるというステートメントです。\rたとえば、 は改行として読み取られ、結果の先頭にある改行を説明します。バックスラッシュの多くは、後の文字が特別な意味を持たないため、明らかに無視されます。

\\リテラルのバックスラッシュが必要な場合は、二重のバックスラッシュ ( ) を使用します。結果は、出力に単一のバックスラッシュになります。このように動作するのは、最初のバックスラッシュが 2 番目のバックスラッシュをエスケープしているためです

于 2013-08-22T00:18:00.430 に答える
2

ジョナサンが言ったことと同様に、私はこの解決策を持っています:

CONCAT('{\\rtf1\\ansi\\ansicpg1252\\deff0\\deflang1033{\\fonttbl{\\f0\fnil\\fcharset0 Arial;}}\\viewkind4\\uc1\\pard\\fs18','1','\\par }')

これを挿入する文字列として使用します。

ここにSQLFiddleがあります

于 2013-08-22T00:57:14.103 に答える