首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >大小写语法错误

大小写语法错误
EN

Stack Overflow用户
提问于 2017-01-18 10:17:50
回答 2查看 52关注 0票数 2

你好,我正在尝试用mySQL来做这件事。我尝试使用SELECT IF和CASE来更改标题。每个标题描述的前面都有"A“;即使第二个单词以辅音开头。因此,我尝试查询描述,但编辑那些以辅音开头的描述,使其以"An“开头。

代码语言:javascript
复制
CASE
    WHEN description LIKE ('A A%') THEN CONCAT('An ', TRIM(LEADING 'A ' FROM description))
    WHEN description LIKE ('A E%') THEN CONCAT('An ', TRIM(LEADING 'A ' FROM description))
    WHEN description LIKE ('A I%') THEN CONCAT('An ', TRIM(LEADING 'A ' FROM description))
    WHEN description LIKE ('A O%') THEN CONCAT('An ', TRIM(LEADING 'A ' FROM description))
    WHEN description LIKE ('A U%') THEN CONCAT('An ', TRIM(LEADING 'A ' FROM description))
END;

所以这段特殊的代码给了我错误代码: 1064语法。

代码语言:javascript
复制
SELECT IF(description NOT LIKE ('A A%'), NULL, CONCAT('An ', TRIM(LEADING 'A ' FROM description))),
    IF(description NOT LIKE ('A E%'), null, CONCAT('An ', TRIM(LEADING 'A ' FROM description))),
    IF(description NOT LIKE ('A I%'), NULL, CONCAT('An ', TRIM(LEADING 'A ' FROM description))),
    IF(description NOT LIKE ('A O%'), NULL, CONCAT('An ', TRIM(LEADING 'A ' FROM description))),
    IF(description NOT LIKE ('A U%'), NULL, CONCAT('An ', TRIM(LEADING 'A ' FROM description)))
FROM film_text;    

这段特定的代码返回单独的列,但是我试图将所有这些都查询到一列中。

我的IF代码块返回了什么:

EN

Stack Overflow用户

发布于 2017-01-18 10:28:13

不要在LIKE表达式中使用括号将术语括起来。这可能是您看到的语法错误的原因。相反,尝试使用只有一个条件的CASE表达式:

代码语言:javascript
复制
SELECT CASE WHEN UPPER(description) NOT LIKE 'A A%' AND
                 UPPER(description) NOT LIKE 'A E%' AND
                 UPPER(description) NOT LIKE 'A I%' AND
                 UPPER(description) NOT LIKE 'A O%' AND
                 UPPER(description) NOT LIKE 'A U%'
            THEN CONCAT('An ', TRIM(LEADING 'A ' FROM description))   -- replace A with An
            ELSE description      -- otherwise use original description
       END AS description
FROM yourTable

您还可以在此处将REGEXP与否定字符类[^aeiou]一起使用,以匹配不以元音开头的标题:

代码语言:javascript
复制
SELECT CASE WHEN description REGEXP '^A [^aeiou]'
            THEN CONCAT('An ', TRIM(LEADING 'A ' FROM description))
            ELSE description
       END AS description
FROM yourTable
票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41710316

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档