gpt4 book ai didi

sql - 如何生成特定长度的单列?

转载 作者:行者123 更新时间:2023-12-04 01:21:07 25 4
gpt4 key购买 nike

这并不像看起来那么简单。我挣扎了几个小时,用谷歌搜索无济于事。

我想生成一个长度始终为 30 个字符的列,因此如果该列仅包含 2 个字符,则其他 28 个字符应该是空格。

我正在尝试将两个不同的列合并为一个列,如下所示:

选择 FirstName + LastName 作为 FullName

我想得到如下结果:

DesiredResult

这意味着第一行将有 7 个可见字符 (Michael),然后是 8 个空格,然后是 6 个可见字符 (Jordan),然后是 9 个空格。总共有 30 个字符。第二行将有 5 个可见字符(魔术师),然后是 10 个空格,然后是 7 个可见字符(约翰逊),然后是 8 个空格。第三行将有 5 个可见字符 (Larry),然后是 10 个空格,然后是 4 个可见字符 (Bird),然后是 11 个字符。

两列的长度总是不同的,所以我正在寻找无论长度如何都能工作的代码。这意味着它总是在名字后添加正确数量的空格。您可能已经注意到,名字始终为 15 个字符(可见或为空),姓氏为另外 15 个字符(可见或为空)。

有人知道怎么做吗?提前致谢!

最佳答案

使用char():

select concat(convert(char(15), firstname), convert(char(15), lastname))

char() 类型自动用空格填充字符串,因此无需更多工作。这还有一个很好的功能,即如果名字或姓氏太长,则只使用前 15 个字符。

这是明确的documented对于 len()(我认为是为了符合标准):

Returns the number of characters of the specified string expression, excluding trailing spaces.

遵循此建议:

Note

To return the number of bytes used to represent an expression, use the DATALENGTH function.

Here是一个数据库<> fiddle 。

SQL Server 在测量长度时不考虑空格。因此,在上面的长度中,您将得到 21 和 20。要在不删除尾部空格的情况下查看长度,请使用 datalength()

关于sql - 如何生成特定长度的单列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62639541/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com