OMG*_*ies 16
这是SQL和各种扩展之间的类似功能的例子之一,但只是不同,你不能保证所有数据库之间的可移植性.
使用PostgreSQL语法(没有提到模式匹配)的SUBSTRING关键字是ANSI-99.为什么这花了他们这么久,我不知道......
您需要的关键是获取现有列值的子字符串,因此您需要知道调用数据库子字符串函数的内容.
SELECT SUBSTR('abcd_01', -2) FROM DUAL
Run Code Online (Sandbox Code Playgroud)
Oracle没有RIGHT函数,实际上它只是substring函数的包装器.但Oracle的SUBSTR确实允许您指定一个负数,以便反向处理字符串(从头开始).
SELECT SUBSTRING('abcd_01', LEN('abcd_01') - 1, 2)
SELECT RIGHT('abcd_01', 2)
Run Code Online (Sandbox Code Playgroud)
为简洁起见,RIGHT是理想的.但是为了便携性,SUBSTRING是更好的选择......
与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)
Run Code Online (Sandbox Code Playgroud)
PostgreSQL只有SUBSTRING:
SELECT SUBSTRING('abcd_01' FROM LENGTH('abcd_01')-1 for 2)
Run Code Online (Sandbox Code Playgroud)
...但它支持有限的模式匹配,您可以看到其他地方不支持.
SQLite仅支持SUBSTR:
SELECT SUBSTR('abcd_01', LENGTH('abcd_01') - 1, 2)
Run Code Online (Sandbox Code Playgroud)
如果可用则使用RIGHT,而如果需要将查询移植到其他数据库,则SUBSTR/SUBSTRING会更好,因此它可以向其他人明确说明发生了什么,并且应该更容易找到相同的功能.
归档时间: |
|
查看次数: |
42002 次 |
最近记录: |