sql >> Databáze >  >> RDS >> Sqlserver

Rozdělení odděleného řetězce proměnné délky do více řádků (SQL)

Nejprve mi dovolte říct, že to je důvod, proč byste v první řadě neměli mít data oddělená čárkami. Neexistuje žádný snadný ani účinný způsob, jak s ním pracovat.

To znamená, že můžete použít rekurzivní dotaz k rozdělení řetězce a získat z něj čísla:

with split as
(
  select
    item = cast('' as varchar(max)),
    source = cast('20,0, 5,,^24,0, 0,,^26,0, 0,,^281,0, 0,,^34,0, 2,,^48,0, 2,,^44,0, 2,,^20,0, 10,,^20,5, 5,,^379,1, 1,,^26,1, 2,,^32,0, 1,,^71,0, 2,,^' as varchar(max))
  union all
  select
    item = substring(source, 1, charindex(',,', source)),
    source = substring(source, charindex(',,', source) + 2, 10000)
  from split
  where source > ''
)
select substring(item, 1, charindex(',', item) -1)
from split
where item > ''

Výsledek:

20
^24
^26
^281
^34
^48
^44
^20
^20
^379
^26
^32
^71



  1. Jak změnit pozici sloupce tabulky MySQL bez ztráty dat sloupců?

  2. Agregovat bitové NEBO v poddotazu

  3. (PHP):Upozornění:include_once, nepodařilo se otevřít stream:Povolení odepřeno

  4. Co když smažu ibdata1 v mysql (LINUX)