相关疑难解决方法(0)

VARCHAR(MAX)在连接字符串时表现得很奇怪

我有一个连接查询:

DECLARE @path NVARCHAR(max) 
SELECT @path = ISNULL(@path + '/', '') + url_segment 
    FROM navigation_self_and_parents(2813) ORDER BY depth ASC
SELECT @path
Run Code Online (Sandbox Code Playgroud)

navigation_self_and_parents(2813) 回报

id    par_id  title        url_segment    sequence        depth
2813  2816    testing1234  testing1234    0               0   
2816  2809    U            /fixedurl      0               -1   
2809  NULL    E            E              0               -2   
Run Code Online (Sandbox Code Playgroud)

我的串联查询返回

'testing1234'             when using `NVARCHAR(MAX)` and
'E//fixedurl/testing1234' when using `NVARCHAR(4000)`

我最好的猜测是使用NVARCHAR(MAX)原因@path每次设置都要重新输入,因此在重新输入之前丢失了设置的内容,或者在第一次设置时输入,然后后续连接调用无声地失败.

我很想真正理解这种行为的根本原因.

UPDATE

navigation_self_and_parents:

USE [SomeDatabase]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER FUNCTION [dbo].[navigation_self_and_parents]
(   
    @id int …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server-2005

7
推荐指数
1
解决办法
1238
查看次数

标签 统计

sql ×1

sql-server-2005 ×1

t-sql ×1