Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Zapytanie SQL do podzielenia jednej kolumny na dwie kolumny

Coś takiego

declare @x nvarchar(500) = '1.1.1 chapter1'

select substring(@x,1,charindex('.',@x,1+charindex('.',@x))-1) as Major,
       substring(@x,charindex('.',@x,1+charindex('.',@x)),len(@x)-charindex('.',@x,1+charindex('.',@x))) as Minor

Zastąp @x w zapytaniu ..

i skrzypce dla niego:http://sqlfiddle.com/#!3/d41d8 /4424/0

zaktualizowany za pomocą . z przodu i dowód na błąd

zadeklaruj @x nvarchar(500) ='1.1.1 rozdział1'

select @x,
   case when charindex('.',@x,1+charindex('.',@x)) <> 0 then substring(@x,1,charindex('.',@x,1+charindex('.',@x))-1)
        else 'Cannot be parsed'
   end,
   case when charindex('.',@x,1+charindex('.',@x)) <> 0 then substring(@x,charindex('.',@x,1+charindex('.',@x)),len(@x)-charindex('.',@x,1+charindex('.',@x))+1)
        else 'Cannot be parsed'
   end

i bez . z przodu

zadeklaruj @x nvarchar(500) ='1.1.1 rozdział1'

select @x,
   case when charindex('.',@x,1+charindex('.',@x)) <> 0 then substring(@x,1,charindex('.',@x,1+charindex('.',@x))-1)
        else 'Cannot be parsed'
   end,
   case when charindex('.',@x,1+charindex('.',@x)) <> 0 then substring(@x,1+charindex('.',@x,1+charindex('.',@x)),len(@x)-charindex('.',@x,1+charindex('.',@x)))
        else 'Cannot be parsed'
   end

http://sqlfiddle.com/#!3/d41d8/4430/0



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Używanie parametru wyjściowego z procedury składowanej SQL Server w programie Access

  2. Jak utworzyć procedurę składowaną, która opcjonalnie będzie przeszukiwać kolumny?

  3. wstawić dane z jednej kolumny z tabeli do innej tabeli, ale dane z drugiej kolumny zostaną określone dynamicznie

  4. Nieużywany indeks programu SQL Server

  5. Zamień pojedyncze cudzysłowy w SQL Server