Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL:从OCR';编辑文件_Sql_Sql Server_Date_Ocr_Data Cleaning - Fatal编程技术网

SQL:从OCR';编辑文件

SQL:从OCR';编辑文件,sql,sql-server,date,ocr,data-cleaning,Sql,Sql Server,Date,Ocr,Data Cleaning,我从几个经过OCR的.pdf文档中获得了各种日期,这些日期以DD/MM/YYYY格式导入。由于文件是复印件,因此质量不高,导致日期难以区分/和1,如下所示: 问题:0110212015 2015年2月1日 01102/2015 所需输出:01/02/2015 由于字符串保留了原始日期的长度,我希望用/替换Nth位置的字符。据我所知以及从搜索中获得的信息,SQL没有那么简单的功能。它们的替代或替换功能是否可以针对我需要更改的确切1?或者我可以使用现有的值重新构造字符串吗?SQL Server确实有

我从几个经过OCR的
.pdf
文档中获得了各种日期,这些日期以
DD/MM/YYYY
格式导入。由于文件是复印件,因此质量不高,导致日期难以区分
/
1
,如下所示:

问题:
0110212015
2015年2月1日
01102/2015

所需输出:
01/02/2015


由于字符串保留了原始日期的长度,我希望用
/
替换
Nth
位置的字符。据我所知以及从搜索中获得的信息,SQL没有那么简单的功能。它们的替代或替换功能是否可以针对我需要更改的确切
1
?或者我可以使用现有的值重新构造字符串吗?

SQL Server确实有一个函数来执行此操作。。。它叫

所以你的表情看起来像:

STUFF(STUFF (DateString , 3, 1, '/'), 6, 1, '/')

您可以使用STUFF函数:

select stuff(stuff('0110212015',3,1,'/'),6,1,'/')

在SQL Server中,将允许您提取字符串的部分。然后将它们重新组合并转换为一个真实的日期。@MattGibson将子字符串(LTRIM([date]),1,2)+'/'+子字符串(LTRIM([date]),4,2)+'/'+子字符串(LTRIM([date]),7,4)作为[Cleaned_date]完美地工作。。作为答案发布,如果您愿意,我会将您的回答标记为正确。就个人而言,我可能会接受
内容中的一个
答案;有很多不同的方法可以做到这一点,考虑到它们在不同的数据库系统中几乎都是非标准的,没有一种是“完美”的解决方案。(
STUFF
在SQL Server上可能更整洁,但子字符串和连接可能更容易被其他语言的人阅读…)