将所有符合条件的结果拼接成一列并用逗号隔开
经过研究,我们发现这个问题与数据类型varchar和nvarchar的选择有关。varchar是一种可变长度的字符数据类型,如果没有在定义时指定长度n,其默认长度为1。而在我们的函数中,由于没有明确指定长度,导致结果在某些情况下被截断。为了解决这个问题,我们需要明确指定varchar的长度或者使用nvarchar数据类型。
考虑到多语言站点的需求,为了减少字符转换问题,建议使用Unicode数据类型nchar或nvarchar。在我们的场景中,由于需要拼接字符串,并且希望结果不受字符数限制,我们应该选择nvarchar数据类型并在定义时明确指定长度。
```sql
CREATE TABLE tb(id INT, value NVARCHAR(MAX));
INSERT INTO tb VALUES(1, 'aa');
INSERT INTO tb VALUES(1, 'bb');
INSERT INTO tb VALUES(2, 'aaa');
INSERT INTO tb VALUES(2, 'bbb');
INSERT INTO tb VALUES(2, 'c');
CREATE FUNCTION [dbo].[f_str](@id INT) RETURNS NVARCHAR(MAX) AS
BEGIN
DECLARE @str NVARCHAR(MAX);
SET @str = '';
SELECT @str = @str + ',' + CAST(value AS NVARCHAR(MAX)) FROM tb WHERE id = @id;
SET @str = RIGHT(@str, LEN(@str) - 1);
RETURN @str;
END;
--调用函数
SELECT id, value = dbo.f_str(id) FROM tb GROUP BY id;
```
编程语言
- 将所有符合条件的结果拼接成一列并用逗号隔开
- PHP统计目录中文件以及目录中目录大小的方法
- 关于vue.extend和vue.component的区别浅析
- javascript点击按钮实现隐藏显示切换效果
- 解决html input验证只能输入数字,不能输入其他的问
- canvas实现简易的圆环进度条效果
- 浅谈jquery中的each方法$.each、this.each、$.fn.each
- jQuery+PHP实现动态数字展示特效
- ASP(VBScript)中整除和取余
- PHP中使用gettext解决国际化问题的例子(i18n)
- 简单谈谈JavaScript的同步与异步
- PHP大批量插入数据库的3种方法和速度对比
- php中trim函数实例用法
- ASP.NET基于Ajax的Enter键提交问题分析
- 解决Window10系统下Node安装报错的问题分析
- JSP页面间传值问题实例简析