【发布时间】:2022-01-22 18:31:03
【问题描述】:
我有替换功能不起作用的问题
DECLARE @Tabela nvarchar(25)
DECLARE @query nvarchar(max)
SET @Tabela = '_#tmp_tt2_POS_racuni_'
SET @query = 'SELECT * INTO '+@Tabela+((replace(convert(varchar(10), getdate(),121),'''-''',''''))+'-'+(replace(convert(nvarchar(10),getdate(),108),''':''','''')))+'NP'+' FROM _tabels'
PRINT @query
SELECT *
INTO _#tmp_tt2_POS_racuni_2021-12-21-11:15:27NP
FROM _tabels
Completion time: 2021-12-21T11:15:27.0724917+01:00
【问题讨论】:
-
一个名为
_#tmp_tt2_POS_racuni_的表也不会像它的名字所暗示的那样是临时的。 临时表的名称必须以 has (#) 开头;你的以下划线开头 (_)。似乎(全部阅读?)您的表(对象)名称都可以。我希望不会。 -
真正的问题是,当您可以使用内置功能处理数据时,为什么要制造这样的维护混乱?如果您甚至无法理解该字符串格式化函数的作用,那么您将面临更严重的问题
-
您的
REPLACE功能正在运行,没有什么可替换的。样式121以yyyy-mm-dd hh:mi:ss.mmm的格式返回varchar,并且您想将值'-'替换为''。您的字符串中没有'-'模式。你实际上应该只是用零长度字符串替换-。 -
虽然,为什么不使用样式
112(yyyymmdd);那么您不需要使用样式121(yyyy-mm-dd hh:mi:ss.mmm) 的前10 个字符并删除连字符(-)。 -
@Nejc 你想要什么格式做?直接生成你想要的格式比费力替换更容易
标签: sql sql-server