sql 存储过程 Quotes()

sql Stored Procedures Quotes()

提问人:sreenivas 提问时间:1/30/2020 更新时间:1/31/2020 访问量:133

问:

我需要在存储过程中生成这样的字符串。

select case when Sex like '%' then 'Person' end as Sex from tableName;

在存储过程中,我生成了这样的内容。

select case when Sex like quote(%) then quote(Person) end as Sex from tableName;

我得到的错误是

    Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '%) then quote(Person) end as Sex from tableName' at line 1   0.000 sec

我的MariaDB版本是“10.3.16-MariaDB”

请帮助解决此问题。

MySQL SQL 存储过程 报价

评论


答:

0赞 sticky bit 1/31/2020 #1

您没有在第二个查询中引用文字。尝试:

SELECT CASE
         WHEN sex LIKE quote('%') THEN
           quote('Person')
       END AS sex
       FROM tablename;

但这对文字来说没有多大意义,因为您已经必须转义其中的任何特殊字符。所以申请是多余的。quote()quote()

评论

0赞 sreenivas 1/31/2020
我用这个查询将每个值都作为 Null 而不是作为 person。但是要只获取引号,我在存储过程中使用了“quote”函数,我们是否需要将引号中的值传递给“quote”函数??
0赞 sticky bit 1/31/2020
对于表达式获取的行有什么值。可能?sexNULLNULL
0赞 sticky bit 1/31/2020
是的,无论您将文字字符串传递给哪个函数,都需要引用它们。解析器需要识别它们。
0赞 sreenivas 1/31/2020
我在性别列中有男性和女性值不为空
0赞 sticky bit 1/31/2020
Well yields -- 单引号位于字符串值本身中。而这些引号在 or 中缺失。我仍然不明白你试图通过调用或表达式实现什么。无论如何,你似乎只需要它是否应该是人。但是,我认为这个问题的语法问题已经解决了。对于其他任何事情,你都应该问一个新问题,并认真阐述你所拥有的并努力实现的目标。quote('%')'%'malefemalequote()CASESELECT 'Person' sex FROM ...