sql - 如何在sql server中将名称划分为行?
问题描述
我希望将名称作为参数传递给存储过程,当我执行此存储过程时,它应该将名称分成行。例如,如果通过“彼得”,输出应该是
彼得
_
_
_
_
解决方案
最快的方法是使用 Tally 和SUBSTRING
. 我假设该名称不会超过 100 个字符,并且(因为它是一个名称)它是一个nvarchar
而不是一个varchar
. 然后,您可以执行以下操作:
DECLARE @Name nvarchar(100) = N'Peter';
WITH N AS(
SELECT N
FROM (VALUES(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL))N(N)),
Tally AS(
SELECT TOP(DATALENGTH(@Name) / 2) --If a varchar, remove the / 2
ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS I
FROM N N1, N N2)
SELECT SUBSTRING(@Name,T.I,1) AS C
FROM Tally T;
推荐阅读
- javascript - 选择或 Jquery 有时无法加载
- java - 条件正则表达式
- javascript - 无法在 AngularJS 中的 Internet Explorer 11 中获取事件目标的父级
- javascript - 带有偏移量的画布 createPattern() 和 fill()
- python - 如何修复此 python 代码以获取我在代码中引用的表中的所有人员姓名?
- mips - 在 mips 程序集中显示浮点数的问题
- outlook-web-addins - outlook.office.com 上的插件是否存在额外边距出现的错误?
- java - 从 Alertdialog EditText 保存文本并显示到 Recyclerview 并永久保存
- networking - 我可以设置网络以在没有 Internet 访问权限的情况下共享信息吗?
- css - Angular:CSS封装bug-网格组件:悬停样式应用于兄弟网格组件