首页 > 解决方案 > SQLIte MAX vs Postgresql GREATEST,带字符串

问题描述

根据其他一些帖子,SQLite 中的 max() 函数等效于 Postgresql GREATEST() 函数。有人可以用字符串解释 SQlite max 函数的奇怪行为吗:

    select max ('rb','VISA', 'Visa', 'Visa Card1', 'VISA VISA Card', 'Visaaa')

返回“rb”。为什么?!?我希望将“VISA VISA Card”作为最长的字符串作为结果返回......

标签: arraysstringpostgresqlsqlitemax

解决方案


它根据作为字节的字符表示返回最大值(小写的值高于大写的值)。

更改为select max ('rb','vISA', 'Visa', 'Visa Card1', 'VISA VISA Card', 'Visaaa'),结果是vISA

重新评论

有没有办法检索最长的字符串?

如果您想要最长的字符串并假设数据位于表的列(在本例中名为mystring)(在本例中名为test),那么您可以使用:-

SELECT mystring FROM test ORDER BY length(mystring) DESC LIMIT 1;

例如

DROP TABLE IF EXISTS test;
CREATE TABLE IF NOT EXISTS test (mystring TEXT);
INSERT INTO test VALUES ('rb'),('VISA'),('Visa Card1'),('VISA VISA Card'),('Visaaa');
SELECT mystring FROM test ORDER BY length(mystring) DESC LIMIT 1;

结果是 :-

在此处输入图像描述

  • 请注意,如果存在多个具有相同最长长度的字符串,则结果将是任意的(来自最长的字符串)。

推荐阅读