sql - 选择子字符串 SQL

标签 sql sql-server select substring

我需要选择在 () 之间找到的子字符串。起始位置和结束位置以及子字符串的长度都会有所不同。我在以下方面取得了一定的成功,但不是 100%。

它适用于某些值,但不适用于其他值,它返回空白,并且还会更改值的大写格式,换句话说,如果值是“TEST”,它将显示为“Test”。

SELECT SUBSTRING(columnName, CHARINDEX('(', LEN(columnName)),
CHARINDEX(')', columnName) - CHARINDEX('(',columnName)) AS INPUT
FROM tableName

更新只有一组括号 ()

最佳答案

只要您只出现一次 (),这就会起作用:

SELECT 
    SUBSTRING(columnName, 
              CHARINDEX('(', columnName)+1, 
              CHARINDEX(')', columnName) - CHARINDEX('(', columnName)-1)
FROM tableName

如果您的值没有任何 (...) 内容,请添加以下 where 子句:

WHERE    CHARINDEX('(', columnName) > 0 AND 
         CHARINDEX(')', columnName) > CHARINDEX('(', columnName)

关于sql - 选择子字符串 SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29947321/

相关文章:

PHP/MySQL 从数据库中取出一个表,但从表中排除一个字段?

mySQL 复合主键,部分键自增

sql-server - Azure SQL Server 的 IP 地址

mysql - 用于执行 SQL 查询的 R 和 R-SQL API

C# 和 HTML 敏捷包 - 返回空值

sql - 检查唯一性(SQL)的最佳方法是什么

MYSQL:尝试在 close_dt 间隔内计算 Property_ID

SQL从exec存储过程中选择SUM(列)?

mysql - 比使用大量 LIKE 查询 mysql 更高效

php - 无法显示 SELECT 结果 sql