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)
提前致谢
您可以在查询中使用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)
但是,这仅在列仅包含可以实际转换为给定类型的数据时才有效.
例如,您可以将转换String栏Double用CDbl()-但前提是所选的行只包含实际上可以转化为价值Double.
只要选择一行,其值包含除数值之外的值(例如"hello"),转换就会失败.
另一方面,你真的需要转换吗?
访问可以自行转换很多.例如,您可以将数值列中的值插入到字符串列中,Access将自行转换它.你不必使用CStr()它.