sm_Value
是一个TEXT
列,我需要将其转换为INT
。在SQL中将文本转换为INT
作为一个事实,即只有两个人会乱用这个表中,列将是数值(幽默我)
我收到此错误信息:
消息206,级别16,状态2,过程User_Password_Date_Interval_Check,10号线
操作数类型冲突:文本与诠释
不相容我曾尝试:
SELECT CONVERT(INT, sm_Value))
FROM Setting_Misc
但我仍然得到错误。
IF EXISTS (SELECT * FROM sysobjects
WHERE type = 'P' AND name = 'User_Password_Date_Interval_Check')
BEGIN
PRINT 'Dropping Procedure User_Password_Date_Interval_Check'
DROP Procedure User_Password_Date_Interval_Check
END
GO
PRINT 'Creating Procedure User_Password_Date_Interval_Check'
GO
CREATE Procedure User_Password_Date_Interval_Check
@ua_pk uniqueidentifier
AS
DECLARE @PasswordExpireDays INT
SELECT
CONVERT(INT, CONVERT(VARCHAR(MAX), sm_Value))
FROM Setting_Misc
SELECT
@PasswordExpireDays = COALESCE(sm_Value,0)
FROM
Setting_Misc AS sm
INNER JOIN
Syndicates As syn ON sm.syn_fk = syn.syn_pk
INNER JOIN
Company As c ON c.syn_fk = syn.syn_pk
INNER JOIN
User_Accounts As ua ON ua.c_fk = c.c_pk
WHERE
sm.sm_Setting = 'PasswordExpireDays'
GO
GRANT EXEC ON User_Password_Date_Interval_Check TO WEB
你为什么先把它转换成varchar(max)? – scsimon
[将数字转换成文本数据类型转换为int](http://stackoverflow.com/questions/15346002/convert-number-stored-as-text-data-type-to-int) – dfundako
'@PasswordExpireDays '似乎是你的错误是如此只是将它转换为'@PasswordExpireDays = COALESCE(CONVERT(INT,CONVERT(varchar(max),sm_Value)),0)' – scsimon