引数で渡されたテキストをシングルクォートする。
成果物
構文
select quote(文字列);
'文字列'
例
select 'quote()'; select quote('quote()'); select quote('クォートする。');
quote() 'quote()' 'クォートする。'
でも、文中に'
があったとき、うまく動作しない。
問題
自前でクォートした上でquote()することができない(''quote()''
にできない)
select quote(''quote()''); select quote('''quote()'''); select quote('\'quote()\''); select quote(char(0x27) || 'quote()' || char(0x27)); select quote(quote('quote()'));
Error: near line 5: near "quote": syntax error '''quote()''' Error: near line 7: near "quote": syntax error '''quote()''' '''quote()'''
'
をエスケープしないと構文エラー。エスケープすると'''
と3つ出てしまい2つにできない。
まあ、こんな用途はたぶん無いだろう。だが、以下は困るのでは?
文中に'
を使った上でquote()することができない('I'm Andy'
にできない)
-- select quote('I'm Andy.'); select quote('I''m Andy.'); select quote('I' || char(0x27) || 'm Andy.');
'I''m Andy.' 'I''m Andy.'
英文ならシングルクォーテーションを使うこともあるだろうに。それをクォートしたいときはどうするの?
対象環境
- Raspbierry pi 3 Model B+
- Raspbian stretch 9.0 2018-11-13
- bash 4.4.12(1)-release
- SQLite 3.29.0
- MeCab 0.996ユーザ辞書
$ uname -a Linux raspberrypi 4.19.42-v7+ #1218 SMP Tue May 14 00:48:17 BST 2019 armv7l GNU/Linux
前回まで
- SQLite3学習 俯瞰まとめ
- SQLite3学習 環境構築まとめ
- SQLite3学習 インタフェースまとめ(C言語、CLI、対話モード、Tcl...)
- SQLite3学習 ドットコマンドまとめ
- SQLite3学習 JSON拡張まとめ
- SQLite3学習 FTSまとめ(ICU, MeCab)
- SQLite3学習 再帰クエリ(WITH RECURSIVE)
- SQLite3学習 R-Treeモジュール
- SQLite3学習 Geopoly(2次元ベクタ画像の生成)
- SQLite3学習 拡張関数(generate_series)
- SQLite3学習 拡張ライブラリ数学関数(extension-functions.c)
- SQLite3学習 謎と名前
- SQLite3学習 構文まとめ
- SQLite3関数の一覧と分類
- SQLite3コア関数の一覧と分類