Как искать отдельные значения в столбцах из столбца объединенных значений - PullRequest
1 голос
/ 10 января 2020

У меня есть база данных, в которой данные, с которыми мне нужно работать, хранятся в двух разных столбцах. Мне также нужно импортировать файл Excel, и все данные в этом файле Excel разделены только знаком da sh. Поэтому мне нужно выяснить, как создать запрос, может быть, псевдоним или как разделить столбец по da sh, а затем выполнить запрос с разделением данных.

Код, который я использовал попытка была следующей:

SELECT 
    CAST (dbo_predios.codigo_manzana_predio as nvarchar(55))+'- 
    '+CAST(dbo_predios.codigo_lote_predio as nvarchar(55)) as ROL_AVALUO 
FROM dbo_predios 
WHERE ROL_AVALUO like '%9132-2%'

Это один из способов, который я пробовал, но я не знаю, как разделить по определенному символу. Данные в Excel поступают точно так же, как я написал в «похожей» части кода.

1 Ответ

1 голос
/ 10 января 2020

Я верю, что это то, что вам нужно из-за его звуков:

SELECT
 [locateDashInString] = CHARINDEX('-', e.FieldHere, 0) --just showing you where it finds the dash
,[SubstringBeforeItemLocated] = 
    SUBSTRING(
                e.FieldHere --string to search from
                ,0 --starting index
                ,CHARINDEX('-', e.FieldHere, 0) --index of found item
              )
,[SubstringAfterItemLocated] = 
    SUBSTRING(
                e.FieldHere --string to search from
                ,CHARINDEX('-', e.FieldHere, 0) + 1 --starting index for substring
                ,LEN(e.FieldHere) --finish substring at this point
             )
FROM ExcelImportedDataTable e

Столбец locateDashInString просто показывает вам, где находится символ «-», он вам на самом деле не нужен остальные два столбца являются разделением значения, поэтому '9132-2' разделено на два значения / два столбца.

** Просто обратите внимание, что это будет работать, только если у вас всегда есть формат val1-val2 в данных. Если формат такой же, то все должно быть в порядке.

...