比较sql中的版本字符串

时间:2015-06-09 07:08:45

标签: sql

我在 APP 表格中有一行,记录为

Version :1.1.120 ,category :Home , app:iphone

现在,如果用户发送的输入版本为1.1.130,则希望返回版本1.1.120的行详细信息,但是对于1.1.115(小于DB中的版本),不会返回任何行。

此外,如果还有一条详细信息为

的附加记录
Version :1.1.140 ,category :Books, app:iphone

现在,如果输入版本是1.1.145,我想运行这两行。选择版本作为输入的sql(服务器中存在的工作)工作,但上面的场景不起作用。

感谢。

2 个答案:

答案 0 :(得分:1)

你只是在寻找比这种情况更低的价格:

SELECT *
FROM app
where version < '1.1.125';
SELECT *
FROM app
where version < '1.1.145';

Fiddle

答案 1 :(得分:1)

根据您的规格,如果记录大于最大值,则显示当前版本和先前版本,否则显示的版本不低于提供的输入(升级)。

显示升级版本

SELECT * FROM app
WHERE 
CASE WHEN '1.1.120' > (SELECT MAX(version) FROM app)
THEN version <= '1.1.120'
ELSE version >= '1.1.120'
END
ORDER BY version DESC;

显示所有以前的版本

SELECT * FROM app
WHERE 
CASE WHEN '1.1.145' > (SELECT MAX(version) FROM app)
THEN version <= '1.1.145'
ELSE version >= '1.1.145'
END
ORDER BY version DESC;

http://sqlfiddle.com/#!9/e26ad/3

我可以过滤这个以仅显示最近的升级而不是所有升级,但如果有多个记录大于提供的版本,则不清楚您要查找的是什么。