我试图从一个字符串中解析出一个值,这个字符串包含stringlast string4978/find-index-of-last-occurrence-of-a-sub-string-using-t-sql">index.目前,我正在做一个可怕的黑客操作,包括反转字符串:

SELECT REVERSE(SUBSTRING(REVERSE(DB_NAME()), 1, 
    CHARINDEX('_', REVERSE(DB_NAME()), 1) - 1))

对我来说,这段代码几乎不可读.我希望2016年的SQL Server会更好.

推荐答案

如果你想在最后_次之后得到所有东西,那么使用:

select right(db_name(), charindex('_', reverse(db_name()) + '_') - 1)

如果你想要之前的一切,那么使用left():

select left(db_name(), len(db_name()) - charindex('_', reverse(db_name()) + '_'))

Sql相关问答推荐

如何将资源密集型自连接转换为更快的查询?

SQL将 Select 查询作为新列添加到另一个 Select 查询

BigQuery-当子查询不返回任何结果时,所有结果为零

SQL:如何取上一年的平均值?

仅当交叉应用返回单值时才更新记录

如何使用不重复的单个顶级字段(列)向json数组 Select 多行

如何用HeidiSQL在Firebird中设置超时?

插入具有预期逻辑的查询以Forking 表

对现有记录进行分组

用户定义的标量值函数是否仍然会阻止并行性?

什么是 100.它与 100 有什么区别?

PostgreSQL 中将数据从 JSONB 类型转换为 Array 类型

如何使用 join 和 where 子句从另一表中仅删除一个表中的值

添加一列并根据其他列值进行填充

条件意外地显着降低性能的地方

使用标准SQL 触发更新当前日期

如何使用 pg-promise 创建要在复杂的 sql 查询中使用的 VALUES 列表?

有没有一种方法可以将始终遵循序列的单个字段的值组合起来,以创建每个 ID 的所有移动?

Amazon Redshift - 子计划的哈希表不存在

SQL 中的可选 JOIN