小编Pab*_*bra的帖子

兼容级别 80 和 100 之间的可变长度字符串问题

在我当前的企业中,我遇到了大量与特定场景相关的问题。

我们有一个 SQL Server 2008,我们想迁移到 SQL Server 2016,所以我们将兼容性从 80 迁移到 100,但是我们的一些存储过程有问题,如下代码所示:

CREATE TABLE #PRUEBA (texto1 char(30), condicion char(30)) 
INSERT INTO  #PRUEBA VALUES ('PFI','1') 
INSERT INTO #PRUEBA VALUES ('CFI','2') 
SELECT 
    CASE
        WHEN condicion= '1' THEN texto1 
        ELSE 'TFI'
    END 
FROM  #PRUEBA 
DROP TABLE #PRUEBA
Run Code Online (Sandbox Code Playgroud)

兼容性 -> 80

'PFI                           ' -> char of 30 length 
'TFI                           ' -> char of 30 length
Run Code Online (Sandbox Code Playgroud)

兼容性 -> 90

'PFI                           ' -> varchar of 30 length
'TFI'                            -> varchar of 3 length
Run Code Online (Sandbox Code Playgroud)

兼容性 -> 100

'PFI …
Run Code Online (Sandbox Code Playgroud)

sql-server-2008 sql-server varchar sql-server-2016 compatibility-level

6
推荐指数
1
解决办法
112
查看次数