是否有编写此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
我试图做的是当上面有这些值中的任何一个时,它应该导致''空。
谢谢!
答案 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
模式匹配整个字符串;正则表达式模式匹配任何子字符串。要使用正则表达式获得相同的效果,您需要将正则表达式锚定到开头和结尾。_
是类似模式中的特殊字符,该字符与任何字符都匹配一次。正则表达式中的等效项是.?
。.
是正则表达式中的特殊字符,因此需要转义(我通常通过将其设置为字符类来实现)。