前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >VFP用SQL表达式创建临时表一处细节,不注意就会翻车

VFP用SQL表达式创建临时表一处细节,不注意就会翻车

作者头像
加菲猫的VFP
发布2022-04-07 19:31:57
发布2022-04-07 19:31:57
60000
代码可运行
举报
文章被收录于专栏:加菲猫的VFP加菲猫的VFP
运行总次数:0
代码可运行
VFP本身也是支持SQL语句运行的,常规的SQL语句完全没有问题。 我们有时候会对查询的字段进行运算,但有些时候SQL并不是我们预想的结果,具体来说,就是SQL进行字符串运算会按第一个字段的长度进行裁切,这样就麻烦了。所以今天要注意这处细节,并给出解决方案。

因为用SQL指令创建表太常用了,这也是VFP极速开发的原因之一。

这样就可以轻松创建一个临时表。

代码语言:javascript
代码运行次数:0
复制
select * from ryxx into cursor ryxx_tmp

有一个信息表,存放了人的姓+名,我们有时候需要进行两个相加运算,如

代码语言:javascript
代码运行次数:0
复制
CREATE CURSOR tty (FirstName c(10),LastName c(10))
INSERT INTO tty values("jack","1")
INSERT INTO tty values("bob","234")

如果用函数对其进行相加运算,你会发现第二行的结果不是bob234,而是bob23

代码语言:javascript
代码运行次数:0
复制
select GetFullName(FirstName, LastName) as FullName FROM tty INTO CURSOR tty2

SELECT tty2
brow
function GetFullName(tcFirstName, tcLastName)
return trim(tcFirstName) + trim(tcLastName)

SQL根据第一行的字段长度决定了后面所有字段的长度了,发生了裁切。

那怎么解决呢? CAST命令就可以解决了。

代码语言:javascript
代码运行次数:0
复制
select CAST(GetFullName(FirstName, LastName) as v(31)) as FullName FROM tty INTO CURSOR tty2

SELECT tty2
brow

cast对于转换到 字符型、Varchar 和 Varbinary 数据类型, 如果指定的字段宽度小于原始数据宽度, Visual FoxPro 截断值来适应字段宽度。对于转换到 字符型 数据类型, 如果指定宽度大于原始数据, Visual FoxPro 在值的后面填充空格。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-02-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 加菲猫的VFP 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档