【发布时间】:2018-09-05 14:14:45
【问题描述】:
我有一列包含由“/”分隔的两个连接数据,我只想获取“/”之前等于另一个表的列的内容,因此我尝试将 SUBSTRING 与 CHARINDEX 一起使用,但是我认为我做错了什么,请按照代码进行操作。
翻译:Olá, possuo uma coluna que contem dois dados concatenados separados por um '/', quero pegar apenas o que está antes da '/' que seja igual a uma coluna de uma outra tabela, para isso estoutentando utilizar o SUBSTRING com CHARINDEX, mas creio que estou fazendo algo de errado, segue o código.
SELECT TOP 1 * FROM arquivo A, tabela_geral B (NOLOCK), campo_concatenado C (NOLOCK)
WHERE A.primeira_parte = SUBSTRING(C.concatenado, 1, CHARINDEX('/', C.concatenado) -1)
AND B.status = 0
AND B.campo = '13'
AND B.numero NOT IN (6, 78, 79, 80, 81, 82, 83, 91)
【问题讨论】:
-
可能的问题是 C.concatendao 包含的行中没有“/”。
-
你真的应该开始使用 ANSI-92 风格的连接。它们已经上市超过 25 年了。 sqlblog.org/2009/10/08/bad-habits-to-kick-using-old-style-joins 我还建议小心那个 NOLOCK 提示。它比大多数人意识到的更险恶。 blogs.sentryone.com/aaronbertrand/bad-habits-nolock-everywhere
-
你也有前 1 没有排序,所以你无法知道你会回到哪一行。
标签: sql sql-server tsql substring charindex