根据可变长度字段将一分为二



嗨:我有一个用这样的行组成的表格:

ID_CATEGORIA CATEGORIA_DRG
------------ ---------------------------------------------------------------
1            001-002-003-543 Craniotomia
2            004-531-532 Interventi midollo spinale
3            005-533-534 Interventi vasi extracranici
4            006 Decompressione tunnel carpale

我想得到这样的东西:

ID           CATEGORIA           DESCRIZIONE
------------ ------------------  --------------------------------------
1            001-002-003-543     Craniotomia
2            004-531-532         Interventi midollo spinale
3            005-533-534         Interventi vasi extracranici
4            006                 Decompressione tunnel carpale

我不需要更改表格,"格式化"查询就足够了。

我认为SUBSTRING()对我来说是正确的功能,但我不知道如何测量第一个(数字,破折号分隔(字段的长度。

在 Python 中,我会找到带有len("005-533-534 Interventi vasi extracranici".split(' ')[0])'的大小,但我不知道如何在 SQL 中编写它

这样的事情应该做 -

SELECT ID_CATEGORIA AS ID ,SUBSTRING(CATEGORIA_DRG,1,CHARINDEX(' ',CATEGORIA_DRG)) as CATEGORIA,SUBSTRING(CATEGORIA_DRG,CHARINDEX(' ',CATEGORIA_DRG),LEN(CATEGORIA_DRG)) AS DESCRIZIONE
FROM TABLENAME

试试这个:

select id_categoria ID,
substring(categoria_drg, 1, idx) CATEGORIA,
substring(categoria_drg, idx + 1, 1000) DESCRIZIONE
from (
select id_categoria, categoria_drg, charindex(' ', categoria_drg) idx from my_table
) a

它使用charindex来检测代码何时完成,因为它后跟字符串中的第一个空格,函数会找到:)

最新更新