create FUNCTION [dbo].[getTProduct] (@hxetorderid varchar(50))
RETURNS varchar(50) AS
BEGIN declare @product varchar(50),@hLen int
set @hxetorderid=ltrim(rtrim(@hxetorderid))
set @hLen=len(@hxetorderid)-3
if isnumeric(right(@hxetorderid,3))=0
set @product=@hxetorderid
else
set @product=substring(@hxetorderid,1,@hLen) return @product
END将这个函数作为某个表计算列的公式时,总是验证失败,不知是什么原因
RETURNS varchar(50) AS
BEGIN declare @product varchar(50),@hLen int
set @hxetorderid=ltrim(rtrim(@hxetorderid))
set @hLen=len(@hxetorderid)-3
if isnumeric(right(@hxetorderid,3))=0
set @product=@hxetorderid
else
set @product=substring(@hxetorderid,1,@hLen) return @product
END将这个函数作为某个表计算列的公式时,总是验证失败,不知是什么原因
RETURNS varchar(50) AS
BEGIN declare @product varchar(50),@hLen int
set @hxetorderid=ltrim(rtrim(@hxetorderid))
set @hLen=len(@hxetorderid)-3
if isnumeric(right(@hxetorderid,3))=0
set @product=@hxetorderid
else
set @product=substring(@hxetorderid,1,@hLen) return @product
END
SELECT [dbo].[getTProduct]('0.1245')--DROP TABLE TB
CREATE TABLE TB(NAME VARCHAR(20),NEWNAME AS DBO.[getTProduct](NAME))INSERT TB SELECT '1245'SELECT * FROM TBNAME NEWNAME
-------------------- --------------------------------------------------
1245 1(所影响的行数为 1 行)晕,我都能行啊
公式看上去是没什么问题...
这个函数设为函数列时会验证出现错误CREATE FUNCTION [dbo].[getProduct1] (@hxetorderid varchar(50))
RETURNS varchar(50) AS
BEGIN declare @product varchar(50)
if isnumeric(right(@hxetorderid,3))=0
set @product=@hxetorderid
else
set @product=substring(@hxetorderid,1,len(@hxetorderid)-3) return @product
END这样就不会:CREATE FUNCTION [dbo].[getProduct] (@hxetorderid varchar(50))
RETURNS varchar(50) AS
BEGIN declare @product varchar(50)
if isnumeric(right(@hxetorderid,3))=0
set @product=@hxetorderid
else
set @product=substring(@hxetorderid,1,len(@hxetorderid)-charindex('T',reverse(ltrim(rtrim(@hxetorderid))),1)+1) return @product
END