SQLite 自定义函数作为匹配字符串
Posted
技术标签:
【中文标题】SQLite 自定义函数作为匹配字符串【英文标题】:SQLite custom functions as match string 【发布时间】:2021-01-26 10:37:45 【问题描述】:我创建了一个 SQLite 函数,它接受一个字符串并返回另一个字符串,然后我可以将返回值用作匹配字符串。代码是here
除了单引号外,它工作得很好。在这种情况下,它无法匹配任何行,但如果我直接使用返回的字符串,它可以匹配。有人知道这里有什么问题吗?
sqlite> select simple_query('''');
"''"
sqlite> select ' ', simple_highlight(t1, 0, '[', ']') from t1 where x match simple_query('''');
sqlite> select ' ', simple_highlight(t1, 0, '[', ']') from t1 where x match '"''"';
|@English &special _characters."[']bacon-&and[']-eggs%
完整示例here
【问题讨论】:
我也在 SQLite 论坛问这个问题:sqlite.org/forum/forumpost/c4948d1dc6?t=h 【参考方案1】:这个问题终于在sqlite-forum回答了,我想把原因贴在这里。
原因是SQLite会尝试为我们转义字符串,我们可以验证开启引用模式后,如你所见,我们的返回值会被SQLite从“'”转义为“''”。这意味着我们不需要在函数中转义单引号。
sqlite> select simple_query('''');
"'"
sqlite> select simple_query('"');
""""
sqlite> .mode quote
sqlite> select simple_query('"');
'""""'
sqlite> select simple_query('''');
'"''"'
【讨论】:
以上是关于SQLite 自定义函数作为匹配字符串的主要内容,如果未能解决你的问题,请参考以下文章