sql >> データベース >  >> RDS >> Sqlserver

関数を作成せずにSQLServerで区切り文字列を分割するにはどうすればよいですか?

    XMLを使用したバージョン。

    declare @S varchar(100) = 'Hello John Smith'
    
    select 
      n.r.value('.', 'varchar(50)')
    from (select cast('<r>'+replace(@S, ' ', '</r><r>')+'</r>' as xml)) as s(XMLCol)
      cross apply s.XMLCol.nodes('r') as n(r)
    

    代わりにテーブルを使用するReplace@T 使用しているテーブルを使用します。

    -- Test table
    declare @T table (ID int, Col varchar(100))
    insert into @T values (1, 'Hello John Smith')
    insert into @T values (2, 'xxx yyy zzz')
    
    select 
      T.ID,
      n.r.value('.', 'varchar(50)')
    from @T as T
      cross apply (select cast('<r>'+replace(replace(Col,'&','&amp;'), ' ', '</r><r>')+'</r>' as xml)) as S(XMLCol)
      cross apply S.XMLCol.nodes('r') as n(r)
    

    文字列を分割する'Hello John Smith' 変数を使用せずに

    select 
      n.r.value('.', 'varchar(50)')
    from (select cast('<r>'+replace('Hello John Smith', ' ', '</r><r>')+'</r>' as xml)) as s(XMLCol)
      cross apply s.XMLCol.nodes('r') as n(r)
    


    1. SQL Server Management Studio(SSMS)

    2. 関係のために許可が拒否されました

    3. 配列と多くの更新がある大きなテーブルでPostgreSQLが遅くなる

    4. phpMyAdminでルートログインを無効にする