栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

查询子串形成

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

查询子串形成

这是有关SQL与各种扩展之间如何具有相似功能的示例之一,但是它们之间的差异足以使您无法保证所有数据库之间的可移植性。

使用PostgreSQL语法(未提及模式匹配)的SUBSTRING关键字是ANSI-99。为什么这花了他们这么长时间,我不知道…

您需要解决的问题是获取现有列值的子字符串,因此您需要知道数据库子字符串函数被调用了什么。

甲骨文


SELECt SUBSTr('abcd_01', -2) FROM DUAL

Oracle没有RIGHT函数,实际上它只是子字符串函数的包装器。但是Oracle的SUBSTR确实允许您指定一个负数,以便以相反的方式处理字符串(以开头结尾)。

SQL服务器


两个选项-SUBSTRING和RIGHT:

SELECt SUBSTRINg('abcd_01', LEN('abcd_01') - 1, 2)SELECT RIGHt('abcd_01', 2)

为了简洁起见,RIGHT是理想的选择。但是对于可移植性而言,SUBSTRING是更好的选择…

的MySQL


与SQL Server一样,三个选项-SUBSTR,SUBSTRING和RIGHT:

SELECT SUBSTr('abcd_01', LENGTH('abcd_01') - 1, 2)SELECT SUBSTRINg('abcd_01', LENGTH('abcd_01') - 1, 2)SELECT RIGHt('abcd_01', 2)

PostgreSQL的


PostgreSQL只有SUBSTRING:

 SELECT SUBSTRINg('abcd_01' FROM LENGTH('abcd_01')-1 for 2)

…但是它确实支持有限的模式匹配,您可以看到其他地方不支持这种模式。

SQLite的


SQLite仅支持SUBSTR:

SELECT SUBSTr('abcd_01', LENGTH('abcd_01') - 1, 2)

结论


如果可用,请使用RIGHT,而如果需要将查询移植到其他数据库,则SUBSTR /
SUBSTRING会更好,因此其他人可以清楚知道正在发生的事情,并且应该更容易找到等效的功能。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/400248.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号