如何从合并值列中搜索cloumns中的分离值

问题描述 投票:0回答:1

我有一个数据库,我需要使用的数据存储在两个不同的列中。我还需要导入一个excel文件,并且此excel文件中的数据都只用短划线隔开。因此,要么我需要弄清楚如何创建一个查询(也许是一个别名),要么如何用破折号分隔列,然后使用数据拆分查询。

我正在尝试的代码如下:

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上的数据与我在代码的“ like”部分中编写的方式完全相同。

sql sql-server sql-server-2008
1个回答
1
投票

我相信这就是你所追求的:

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的格式时,这才起作用。只要格式相同就可以了。

© www.soinside.com 2019 - 2024. All rights reserved.