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

T-SQL文字列関数:Left/RightとSubstringの使用の違いと奇妙な動作

    末尾にスペースがあります

    RIGHTはスペースを生成しますが、LENは末尾のスペースを無視します

    DECLARE @foo varchar(100)
    SET @foo = 'abc12345def   ' --3 spaces
    
    --right or substring
    SELECT RIGHT(@foo, 3)
    SELECT SUBSTRING(@foo, LEN(@foo)-2, LEN(@foo))
    
    --demonstrate you get spaces
    SELECT REPLACE(RIGHT(@foo, 3), ' ', 'z') --single space
    
    --length differences
    SELECT LEN(@foo), DATALENGTH(@foo)
    
    --solution
    SELECT RIGHT(RTRIM(@foo), 3)
    --or trim your column values before storing
    

    SETANSI_PADDING を参照してください。

    注:しない NULL以外の入力の場合はNULLを取得します...

    --only NULL if you send in NULL
    SELECT RIGHT(NULL, 3)
    



    1. すべてのSQLテーブルをループする方法は?

    2. Mysql:不明な変数、mysqlアプリケーションを実行できない、my.cnfとは関係がないようです

    3. Liquibase + Postgresql + Spring Jpa:ID自動インクリメントの問題

    4. 2つの別々のMySQLクエリの結果を組み合わせる