【问题标题】:MySQL equivalent of Python's triple-quoted strings?MySQL 相当于 Python 的三引号字符串?
【发布时间】:2014-07-16 21:07:51
【问题描述】:

使用 Python 的三引号字符串,我可以定义包含 '、反引号或 " 的字符串,而无需关心:

hello = """    
            This string is bounded by triple double quotes (3 times ").
        Unescaped newlines in the string are retained, though 
        it is still possible to use all normal escape sequences.

            Whitespace at the beginning of a line is
        significant.  

            This string ends in a newline.
        """

在 PHP 中我可以使用 heredoc (<<<):

$str = <<<EOD
Example of string
spanning multiple lines
using heredoc syntax.
EOD;

我怎样才能在 MySQL 中做同样的事情?现在我必须确保我转义了我用来分隔的字符,例如如果我使用' 作为分隔符,我必须在我的字符串中使用\'

UPDATE article
SET article_text ='
Extra-virgin olive oil is a staple in any chef\'s kitchen.
'

我希望能够做到

UPDATE article
SET article_text ='''
Extra-virgin olive oil is a staple in any chef's kitchen.
'''

【问题讨论】:

    标签: python mysql string language-comparisons mysql-escape-string


    【解决方案1】:

    您还可以连续使用两个单引号 (''),而不是用反斜杠转义单引号 (\')。

    据我所知,除了双单引号之外,没有更简单的方法。没有等同于"""。好难过。

    但实际上,正如here 所述,您最好的选择(如果您想节省时间)根本不使用任何基于 SQL 的解决方案;最常见的数据库由用另一种语言编写的程序访问,或者由用另一种语言编写的程序生成的 SQL 脚本访问。

    我还没有遇到过不支持 prepared statements 的单一编程语言,并且为了方便起见,至少有一些 SQL 转义函数。

    【讨论】:

    • 准备好的语句和转义的主要原因当然是安全性。在代码中的常量字符串上使用它们效率低下。 但是如果您需要转义大量文本,通过转义函数运行该文本,将结果打印到标准输出,然后将结果复制粘贴回您的代码,这并不是低效的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-21
    • 1970-01-01
    相关资源
    最近更新 更多