提问人:sreenivas 提问时间:1/30/2020 更新时间:1/31/2020 访问量:133
sql 存储过程 Quotes()
sql Stored Procedures Quotes()
问:
我需要在存储过程中生成这样的字符串。
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”
请帮助解决此问题。
答:
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
对于表达式获取的行有什么值。可能?sex
NULL
NULL
0赞
sticky bit
1/31/2020
是的,无论您将文字字符串传递给哪个函数,都需要引用它们。解析器需要识别它们。
0赞
sreenivas
1/31/2020
我在性别列中有男性和女性值不为空
0赞
sticky bit
1/31/2020
Well yields -- 单引号位于字符串值本身中。而这些引号在 or 中缺失。我仍然不明白你试图通过调用或表达式实现什么。无论如何,你似乎只需要它是否应该是人。但是,我认为这个问题的语法问题已经解决了。对于其他任何事情,你都应该问一个新问题,并认真阐述你所拥有的并努力实现的目标。quote('%')
'%'
male
female
quote()
CASE
SELECT 'Person' sex FROM ...
评论