用CHARINDEX进行订阅

时间:2018-09-05 14:14:45

标签: sql sql-server tsql substring charindex

我有一列包含两个以'/'分隔的串联数据,我只想获得'/'之前等于另一个表的列的内容,因此我尝试将SUBSTRING与CHARINDEX一起使用,但是我想我做错了,请遵循代码。

  

翻译:Olá,possuo uma coluna que contem dois dados concatenados separados   ' / ',que pegar apenas o queestáantes da' / 'que   乌干达的优等生,乌干达的塔拉   实用 SUBSTRING com CHARINDEX ,作者为mas creio que estou fazendo   sego ocódigo的Algo de errado。

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)

2 个答案:

答案 0 :(得分:1)

您尝试过吗?

 SELECT TOP 1 * FROM arquivo A, tabela_geral B (NOLOCK), campo_concatenado C (NOLOCK)
  WHERE A.primeira_parte = "%/"
  AND B.status = 0
  AND B.campo = '13'
  AND B.numero NOT IN (6, 78, 79, 80, 81, 82, 83, 91)

答案 1 :(得分:1)

您应该处理没有'/'的行

如果您考虑类似'/'之前的值

SELECT TOP 1 * FROM arquivo A, tabela_geral B (NOLOCK), campo_concatenado C (NOLOCK)
WHERE A.primeira_parte = COALESCE(SUBSTRING(C.concatenado, 1, NULLIF(CHARINDEX('/', C.concatenado), 0) -1), C.concatenado)
AND B.status = 0
AND B.campo = '13'
AND B.numero NOT IN (6, 78, 79, 80, 81, 82, 83, 91)

如果您考虑'/'之后的值

SELECT TOP 1 * FROM arquivo A, tabela_geral B (NOLOCK), campo_concatenado C (NOLOCK)
WHERE A.primeira_parte = SUBSTRING(C.concatenado, 1, NULLIF(CHARINDEX('/', C.concatenado), 0) -1)
AND B.status = 0
AND B.campo = '13'
AND B.numero NOT IN (6, 78, 79, 80, 81, 82, 83, 91)

我强烈建议您关注Sean Lange的评论