早安, 我试图将记录从csv文件插入到我的数据库表中。问题在于插入字母数字值。 我的列数据类型设置为NUMERIC(19,0),我希望在此列中插入一些数字值。由于某些特定原因,我在csv文件中获取了字母数字值。例如: 我正在获得价值:GBS1182000945008。 我的目标是删除这三个字符,并将剩下的字符串转换为数字,并将其插入到我的表中。
到目前为止,我已经尝试过:
CAST((select substring(?,4,30)) AS NUMERIC)
但是,我仍然遇到这个烦人的错误,我不能只使用TRY_CONVERT来忽略这些值,因为我确实需要数据库中的那些记录。我在这里想念什么?
编辑:我已经分别测试了此代码,它按预期工作,唯一的问题是在插入值时使用它。我所做的是,我检查了给定的参数是否为数字,如果是,则只是插入参数,否则将参数转换为数字。
这就是我的整个情况:
If (SELECT ISNUMERIC(?)) = 1 {
// Just insert the parameter as:
Insert INTO table (NUMERIC_FIELD) VALUE(?)
}
ELSE {
Insert INTO table (NUMERIC_FIELD) VALUE(CAST((select substring(?,4,30)) AS NUMERIC))
}
在这里?代表CSV中的值。
答案 0 :(得分:0)
尝试用AS NUMERIC(19,0)
代替AS NUMERIC
另外,请注意,提取的子字符串中可以包含30位数字(它不适合列数据类型的19 digis。