SQLSERVER 执行函数

小鸟向前飞 小鸟向前飞 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
从网上找了个函数


if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[f_convert]') and xtype in (N'FN', N'IF', N'TF'))
drop function [dbo].[f_convert]
GO

/*--全角/半角转换

转换说明
全角字符从的unicode编码从65281~65374
半角字符从的unicode编码从 33~126
空格比较特殊,全角为 12288,半角为 32
而且除空格外,全角/半角按unicode编码排序在顺序上是对应的
所以可以直接通过用+-法来处理非空格数据,对空格单独处理
like的时候,指定排序规则 COLLATE Latin1_General_BIN
是保证字符顺序按unicode编码排序


declare @s1 varchar(8000)
select @s1='中  2-3456a78STUVabn中国opwxyz'
select dbo.f_convert(@s1,0),dbo.f_convert(@s1,1)
*/
Create FUNCTION f_Convert(
@str NVARCHAR(4000), --要转换的字符串
@flag bit --转换标志,0转换成半角,1转换成全角
)RETURNS nvarchar(4000)
AS
BEGIN
DECLARE
@pat nvarchar(8),
@step int,
@i int,
@spc int
IF @flag=0
Select @pat=N'%[!-~]%',@step=-65248,
@str=REPLACE(@str,N' ',N' ')
ELSE
Select @pat=N'%[!-~]%',@step=65248,
@str=REPLACE(@str,N' ',N' ')
SET @i=PATINDEX(@pat COLLATE LATIN1_GENERAL_BIN,@str)
WHILE @i>0
Select @str=REPLACE(@str,
SUBSTRING(@str,@i,1),
NCHAR(UNICODE(SUBSTRING(@str,@i,1))+@step))
,@i=PATINDEX(@pat COLLATE LATIN1_GENERAL_BIN,@str)
RETURN(@str)
END
GO

declare @s1 varchar(8000)
set @s1='中  2-3456a78STUVabn中国opwxyz'
select dbo.f_Convert(@s1,0),dbo.f_Convert(@s1,1)



为什么在数据库里无法执行 报错信息如下:

消息 4121,级别 16,状态 1,第 3 行
找不到列 "dbo" 或用户定义的函数或聚合 "dbo.f_Convert",或者名称不明确。

双节提示信息 定位到 select dbo.f_Convert(@s1,0),dbo.f_Convert(@s1,1) 这一行
...全文

相关推荐

评论 10
收藏 已收藏
分享
返回顶部
小鸟向前飞
MS-SQL Server 34,876 成员 254,635 内容