Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Sql заявка за разделяне на една колона на две колони

Нещо подобно

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

Заменете @x в заявката си ..

и цигулката за него:http://sqlfiddle.com/#!3/d41d8 /4424/0

актуализиран с . отпред и доказателство за грешка

декларирайте @x nvarchar(500) ='1.1.1 глава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

и без . отпред

декларирайте @x nvarchar(500) ='1.1.1 глава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. Как NTILE() работи в SQL Server

  2. SQL Server 2005 кешира план за изпълнение, който никога не може да работи

  3. Как мога да изтрия или избера ред от таблица, която има определен номер на ред?

  4. SqlConnection.Close() в израза за използване

  5. SQL Server заявка - изчисляване на свободните стаи