在 Access DAO SQL INSERT 中保留尾随空格
Posted
技术标签:
【中文标题】在 Access DAO SQL INSERT 中保留尾随空格【英文标题】:Preserve trailing spaces in Access DAO SQL INSERT 【发布时间】:2012-12-10 17:43:20 【问题描述】:我正在使用 DAO 将数据插入 Access 数据库。当我连接字段时,会删除尾随空格。如何插入数据保留尾随空格?
例如,以下代码在创建列“mytext”时去除了字段 ref 和 name 的尾随空格:
INSERT INTO mytest (ref, mytext) SELECT ref, ref + name + '/' FROM mytable
mytable 是我已链接的 FoxPro 2.5 表。我假设 FoxPro 表中的列包含尾随空格,因为我在 FoxPro 中的数据不会占用字段的整个宽度,并且在 FoxPro 中,当我运行包含连接运算符的 REPLACE 时,会出现尾随空格:
REPLACE ALL mytext WITH ref + name
列 "ref" 和 "name" 是长度为 10 的字符字段。如果 ref = "S1" 和 name = "fred" - 在 FoxPro 中运行的命令将 mytext 设置为“S1”,然后是 8 个空格,然后是“fred”,然后是 4 个假定空格 - 在 VB6 中运行的 DAO 命令将 mytext 设置为“S1fred”
【问题讨论】:
select ref, len(ref), [name], len([name]) from mytable 结果是什么? 好主意 rene,我自己应该有的!当 ref = "S2", len(ref) = 2 当 ref = "S", len(ref) = 1 等等 - 即使字段 ref 的长度为 10 明白了,感谢您的想法 rene。请参阅下面的答案 【参考方案1】:假设 [name] 是 10...
也许明确地添加空格会起作用
INSERT INTO mytest (ref, mytext)
SELECT ref + space(10-len(ref)),
ref + [name] + space(20 - (len(ref)+len([name]) ) )+'/'
FROM mytable
如果 ref 和/或 name 的列大小发生变化,您必须维护此查询。 为了安全起见,请使用 left(ref + space(10), 10)。如果您的列大小更改,至少它不会中断
【讨论】:
谢谢 rene,这是一种享受。 (请注意,尽管我说名称的长度为 10)。你的答案与我得到的另一个答案交叉(所以我删除了我的)。另一种方法是在末尾附加 10 个空格(使用“+ SPACE(10)”,然后取其前 10 个字符(使用“left(ref+space(10), 10)”)。 这也行,虽然我的版本会稍微(一点点)对记忆更温和... @rene: 如果ref
包含超过 10 个字符,您的版本将失败。 LEFT(column + SPACE(N), N)
将更可预测地右填充+截断。以上是关于在 Access DAO SQL INSERT 中保留尾随空格的主要内容,如果未能解决你的问题,请参考以下文章
作为 SQL Server 的前端访问 - ADO 与 DAO?
VB6/Microsoft Access/DAO 到 VB.NET/SQL Server... 有建议吗?