gpt4 book ai didi

sql - 从 SQL 列中选择特定字符

转载 作者:行者123 更新时间:2023-12-04 19:05:15 25 4
gpt4 key购买 nike

我在 BOOKS 表中有列名 BOOKNAME,它可以包含除字母数字之外的许多特殊字符,例如',$#()[],

我如何编写查询以仅显示所有行中的特殊字符并将它们联合起来,例如

Row number Book name   
1 Alice$inWonder(Land)
2 Tom Harry#$%^& adventures

因此查询应该显示类似 $()#%^& 的输出

我试过了,但不明白为什么它不只显示这些字符

SELECT replace(BOOKNAME , '%[^a-zA-Z0-9 ]%', '') FROM BOOKS 
WHERE BOOKNAME like '%[^a-zA-Z0-9 ]%'

最佳答案

为了简单起见,您可以创建一个用户定义的函数来选择特殊字符,如下所示:

用户定义函数:[dbo].[SpecialCharacters]

create Function [dbo].[SpecialCharacters](@res VarChar(1000))
returns varchar(1000)
as
begin

declare @str as varchar(50)
set @str = '%[a-z]%'
while patindex(@str, @res) > 0
set @res = stuff(@res, patindex(@str, @res), 1, '')

return @res
End

然后,

select '' + stuff((select t.specialchars as specialchars from (
select replace(dbo.[SpecialCharacters](bookname), ' ', '') as specialchars
from books
)t
for xml path, type).value('.[1]', 'nvarchar(max)'), 1, 0, '');

结果

+--------------+
| specialchars |
+--------------+
| $()#$%^& |
+--------------+

关于sql - 从 SQL 列中选择特定字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36032517/

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