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

SQL Serverの置き換え、特定の文字の後のすべてを削除

    LEFTをCHARINDEXと組み合わせて使用​​します:

    UPDATE MyTable
    SET MyText = LEFT(MyText, CHARINDEX(';', MyText) - 1)
    WHERE CHARINDEX(';', MyText) > 0
    

    WHERE句は、セミコロンがない行の更新をスキップすることに注意してください。

    上記のSQLが機能することを確認するためのコードを次に示します。

    declare @MyTable table ([id] int primary key clustered, MyText varchar(100))
    insert into @MyTable ([id], MyText)
    select 1, 'some text; some more text'
    union all select 2, 'text again; even more text'
    union all select 3, 'text without a semicolon'
    union all select 4, null -- test NULLs
    union all select 5, '' -- test empty string
    union all select 6, 'test 3 semicolons; second part; third part;'
    union all select 7, ';' -- test semicolon by itself    
    
    UPDATE @MyTable
    SET MyText = LEFT(MyText, CHARINDEX(';', MyText) - 1)
    WHERE CHARINDEX(';', MyText) > 0
    
    select * from @MyTable
    

    次の結果が得られます:

    id MyText
    -- -------------------------
    1  some text
    2  text again
    3  text without a semicolon
    4  NULL
    5        (empty string)
    6  test 3 semicolons
    7        (empty string)
    


    1. PHP接続に失敗しました:SQLSTATE[HY000][2002]接続が拒否されました

    2. MacOSX上のOracle11g

    3. SQL 2005でUTCとローカル(つまりPST)時間の間で日付を効果的に変換する

    4. SQL Serverログインエラー:ユーザー'NT AUTHORITY\SYSTEM'のログインに失敗しました