缩短mysql查询

时间:2018-07-09 09:07:47

标签: mysql sql

是否有编写此mysql查询的较短方法?

SELECT Ren, 
       CASE when Ron like '0_.' then '' else Ron end as Ron,
       CASE when Ron like '1_.' then '' else Ron end as Ron,
       CASE when Ron like '2_.' then '' else Ron end as Ron
FROM tbron

我试图做的是当上面有这些值中的任何一个时,它应该导致''空。

谢谢!

4 个答案:

答案 0 :(得分:3)

尝试一下

SELECT Ren, 
CASE
    WHEN Ron like '0_.' then ''
    WHEN Ron like '1_.' then ''
    WHEN Ron like '2_.' then ''
    ELSE Ron
END
FROM tbron

答案 1 :(得分:2)

我认为下面的查询也应该对您有用。

SELECT Ren, 
CASE
    WHEN Ron like '0_.' OR Ron like '1_.' OR Ron like '2_.' then ''
    ELSE Ron
END
FROM tbron

答案 2 :(得分:1)

您还可以使用如下查询:

answer = input("enter string: ")
len_ans = len(answer)
new_answer = ""
previous = " "
leftover =""

while True:
    for i in range(len_ans):

        if (ord(previous[0])) >= (ord(answer[i])):
            new_answer += previous
        else:
            leftover += previous
        print(new_answer)

        previous = answer[i]

    new_answer += leftover
    leftover = ""

    answer = new_answer

    if answer == new_answer:
        print(new_answer)
        break
    else: 
        new_answer = ""

答案 3 :(得分:1)

为什么要返回三列名称为Ron的列?看起来很尴尬。

假设您真的只想要结果集中的一列,将这三个条件组合在一起,则使用正则表达式的正确等效表达式为:

SELECT Ren, 
       (CASE WHEN Ron REGEX '^[0-2].?[.]$' THEN '' ELSE Ron END) as Ron
FROM tbron;

注意:

  • LIKE模式匹配整个字符串;正则表达式模式匹配任何子字符串。要使用正则表达式获得相同的效果,您需要将正则表达式锚定到开头和结尾。
  • _是类似模式中的特殊字符,该字符与任何字符都匹配一次。正则表达式中的等效项是.?
  • .是正则表达式中的特殊字符,因此需要转义(我通常通过将其设置为字符类来实现)。