sql – 查询子串形成
我想使用SQL获取字符串abcd_01的01部分.什么应该是这个查询,_之前的长度变化?也就是说,它可能是abcde_01或ab_01.基本上,我想要_之后的部分.谢谢.
解决方法这是SQL和各种扩展之间具有类似功能的示例之一,但只是不同,您无法保证所有数据库之间的可移植性.SUBSTRING keyword,using PostgreSQL syntax (no mention of pattern matching) is ANSI-99.为什么这花了他们这么久,我不知道…… 您需要的关键是获取现有列值的子字符串,因此您需要知道调用数据库子字符串函数的内容. 神谕 SELECT SUBSTR('abcd_01',-2) FROM DUAL Oracle没有RIGHT函数,实际上它只是substring函数的包装器.但是Oracle’s SUBSTR确实允许你指定一个负数,以便反向处理字符串(结束于开始). SQL Server 两个选项 – 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',2) PostgreSQL的 PostgreSQL只有SUBSTRING: SELECT SUBSTRING('abcd_01' FROM LENGTH('abcd_01')-1 for 2) …但它支持有限的模式匹配,您可以看到其他地方不支持. SQLite的 SQLite仅支持SUBSTR: SELECT SUBSTR('abcd_01',2) 结论 如果可用则使用RIGHT,而如果需要将查询移植到其他数据库,则SUBSTR / SUBSTRING会更好,因此它可以向其他人显示正在发生的事情,并且应该更容易找到相同的功能. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- sql-server-2008 – SQL Server Max Memory不限制
- .NET Framework SQL Server 数据提供程序连接池
- sql-server – T-SQL – 将datetime更改为日期数
- sql-server – 转义括号[在一个CONTAINS()子句中
- sql-server – 如何获取SQL Server中两个日期之间
- 连接sqlserver - vc
- sql 2000 无法执行查询,因为一些文件缺少或未注册
- sqlserver 和 Mysql 的前几条的查询
- Alwayson(1)——SQLServer2014的安装要求。
- sql-server-2008 – 删除(合并)SQL Server的数据