我有一个要求,我必须将列值存储到声明的变量中,无论如何都是可能的。我知道变量只能存储单个值而不能存储多个值。但就我而言,我非常需要它。
我在这里设置列是否必须将INT中的日期值转换为日期列并将其保存在该变量中以进行比较。
我有一些列的值如下
"A(B_CD_EE_FF_DFE)_ERT"
所以我必须删除这两个括号和过程。
Set @Variable= (SELECT replace (replace ( replace (SUBSTRING(TXMLFileName, CHARINDEX('(', TXMLFileName)
, CHARINDEX(')',TXMLFileName) - CHARINDEX(')', reverse (TXMLFileName)) ) , ')', '') ,'(' ,'') ,'.xml' , '')
from
tblXML )
给我错误,下面给出答案,因为我只选择前1名。
Set @Variable= (SELECT top 1 replace (replace ( replace (SUBSTRING(TXMLFileName, CHARINDEX('(', TXMLFileName)
, CHARINDEX(')',TXMLFileName) - CHARINDEX(')', reverse (TXMLFileName)) ) , ')', '') ,'(' ,'') ,'.xml' , '')
from
tblXML )
所以有任何已知的解决方案...... ?????提前致谢
答案 0 :(得分:1)
变量不需要只存储单个值。你可以创建例如自定义表格类型
CREATE TYPE MyCustomType AS TABLE (
MyCustomTypeId INT,
MyCustomValueColumn VARCHAR(100)
)
或者只是在需要的地方声明一个可比较的表变量。
答案 1 :(得分:0)
declare @tblXML table (TXMLFileName varchar(50))
insert into @tblXML values
('A(B_CD_EE_FF_DFE)_ERT'),
('(EE_FF_DFE)_ERT'),
('A(B_CD_EE)')
declare @tmp varchar(max)
SET @tmp = ''
SELECT @tmp=@tmp+ replace (replace ( replace (SUBSTRING(TXMLFileName, CHARINDEX('(', TXMLFileName)
, CHARINDEX(')',TXMLFileName) -1 ) , ')', '') ,'(' ,'') ,'.xml' , '')+''' '''
from
@tblXML
select ''''+@tmp
或者你不想单行使用这个
SELECT ''''+ replace (replace ( replace (SUBSTRING(TXMLFileName, CHARINDEX('(', TXMLFileName)
, CHARINDEX(')',TXMLFileName) -1 ) , ')', '') ,'(' ,'') ,'.xml' , '')+''''
from
@tblXML