【发布时间】:2017-05-16 23:27:10
【问题描述】:
在 SSMS 中,我有一个源表和一个目标表。在源表中,有一列通常包含十进制数字,但是,当输入值的用户输入 3,14 而不是 3.14 或“未知”等时,它偶尔会包含文本。(在源表中从技术上讲,用户可以输入他们想要的任何内容。此规则无法更改。)
我有一个存储过程,它从源表中挑选一些列,包括有问题的列,然后将信息输入数据仓库,以便我们对其进行分析。
我的目标是用空白或 -1 或其他一些 null 占位符替换/转换原始列中的 varchar 值。
我被告知要创建一个自定义函数来处理这个问题,但我不知道该怎么做,而且我在网上找到的文档现在已经超出了我的想象。
这是表格:
create table SourceTable (
id INT,
Column1 DATE,
Column2 VARCHAR(50)
);
insert into SourceTable (id, Column1, Column2) values (1, '5/8/2017', '533');
insert into SourceTable (id, Column1, Column2) values (2, '10/1/2016', '988');
insert into SourceTable (id, Column1, Column2) values (3, '2/8/2016', '411');
insert into SourceTable (id, Column1, Column2) values (4, '2/29/2016', '491');
insert into SourceTable (id, Column1, Column2) values (5, '3/15/2016', '500');
insert into SourceTable (id, Column1, Column2) values (6, '4/2/2017', '677');
insert into SourceTable (id, Column1, Column2) values (7, '5/4/2016', '56/58');
insert into SourceTable (id, Column1, Column2) values (8, '8/24/2016', 'Unknown');
insert into SourceTable (id, Column1, Column2) values (9, '2/2/2017', '');
insert into SourceTable (id, Column1, Column2) values (10, '1/7/2017', '410');
create table Destination (
id INT,
Column1 DATE,
Column2 float
);
如何将 SourceTable.Column2 中的数字放入 Destination.Column2(如果可能,最好使用自定义函数)?
【问题讨论】:
标签: sql sql-server tsql sql-server-2016