在MS ACCESS SQL插入查询中设置数据类型

use*_*468 0 sql ms-access-2007

我们如何在MS Access中的INSERT INTO/SELECT查询中显式转换数据类型?

示例查询:

INSERT INTO pStudents( pStudentID, pDate, pRate, pGrade )
SELECT sStudentID, sDate, sRate, sGrade
FROM sStudents
WHERE (((sStudents.sStudentID) Is Not Null);
Run Code Online (Sandbox Code Playgroud)

在这里,我想在插入pStudents之前从sStudents表转换字段到以下内容:

pStudentID = text
pDate = Short Date
pRate = Double
pGrade = text
Run Code Online (Sandbox Code Playgroud)

提前致谢

Chr*_*cht 5

您可以在查询中使用Access的内置转换功能:

Select CStr(NumericColumn) from Table
Run Code Online (Sandbox Code Playgroud)

......或作为INSERT查询:

Insert Into AnotherTable (StringColumn)
Select CStr(NumericColumn) from Table
Run Code Online (Sandbox Code Playgroud)

你的意思是那样的吗?


编辑:

好的,带转化的示例查询如下所示:

INSERT INTO pStudents( pStudentID, pDate, pRate, pGrade )
SELECT CStr(sStudentID), CDate(sDate), CDbl(sRate), CStr(sGrade)
FROM sStudents
WHERE (((sStudents.sStudentID) Is Not Null);
Run Code Online (Sandbox Code Playgroud)

但是,这仅在列仅包含可以实际转换为给定类型的数据时才有效.

例如,您可以将转换StringDoubleCDbl()-但前提是所选的行只包含实际上可以转化为价值Double.
只要选择一行,其值包含除数值之外的值(例如"hello"),转换就会失败.

另一方面,你真的需要转换吗?
访问可以自行转换很多.例如,您可以将数值列中的值插入到字符串列中,Access将自行转换它.你不必使用CStr()它.