程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了SQL Server:返回字符串过程INITCAP大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决SQL Server:返回字符串过程INITCAP?

开发过程中遇到SQL Server:返回字符串过程INITCAP的问题如何解决?下面主要结合日常开发的经验,给出你关于SQL Server:返回字符串过程INITCAP的解决方法建议,希望对你解决SQL Server:返回字符串过程INITCAP有所启发或帮助;

(我不会使用此解决方案)

您可以这样使用OUTPUT参数:

create proc INITCAP(@string varchar(30) OUTPUT)
as
begin
    SET @string = UPPER(left(@string,1)) + LOWER(SUBSTRING(@string, 2, 8000))
end
go

declare @lastname varchar
set @lastname = 'MILLER'
exec INITCAP @lastname OUTPUT

declare @firstname varchar
set @firstname = 'StEvE'
exec INITCAP @firstname OUTPUT

:相反, 创建一个内联函数,因此:

CREATE FUNCTION dbo.CAPItalize1(@string varchar(30))
RETURNS table
AS
RETURN
SELECT UPPER(left(@string,1)) + LOWER(SUBSTRING(@string, 2, 8000)) AS Result;

用法:

UPDATE e 
SET firstname = cap.Result
FROM Employee e
CROSS APPLY dbo.CAPItalize1(e.firstname) cap;

:另一个选项可能是标量函数with schemabinding选项(出于性能原因):

CREATE FUNCTION dbo.CAPItalize2(@string varchar(30))
RETURNS VARCHAR(30)
WITH SCHEMABINDING
AS
BEGIN
    RETURN UPPER(left(@string,1)) + LOWER(SUBSTRING(@string, 2, 8000));
END;

用法:

UPDATE Employee
SET firstname = dbo.CAPItalize2(firstname);

解决方法

这就是我所做的。

create proc INITCAP(@string varchar(30))
as
begin
    SET @string = UPPER(LEFT(@string,1)) + LOWER(RIGHT(@string,LEN(@string) -1))
end

declare @lastname varchar
set @lastname = exec INITCAP 'MILLER'

declare @firstname varchar
set @firstname = exec INITCAP 'StEvE'

UPDATE Employee SET firstname = @firstname,lastname = @lastname WHERE empID = 7934

我不断收到错误:

我该怎么办?我希望该过程INITCAP像在Oracle中一样工作:返回一个名称,例如:“ Steve”,“ Miller”

大佬总结

以上是大佬教程为你收集整理的SQL Server:返回字符串过程INITCAP全部内容,希望文章能够帮你解决SQL Server:返回字符串过程INITCAP所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: