我知道这种编程语言已经过时了,但我的公司仍在使用它,因为它不受支持,很难在网上找到这些类型的特定帮助。我在这里搜索了一些选项,但一无所获。
以下是我的数据:8005551234.000000
以下是我需要的数据:8005551234
它显示尾随零的原因是因为我假设当我通过excel将数据导入FoxPro时字段上是一个整数字段,当它转换为dbf时它需要是一个人物场。
我已经玩了一下TRANSFORM功能,但我似乎无法弄明白。
如果有帮助,我的字段名称是“电话”......
提前感谢您的支持!
答案 0 :(得分:2)
使用STREXTRACT()函数。它处理可能没有小数的场景以及可能存在其他角色的场景。 e.g。
? STREXTRACT("8005551234.000000", "", ".", 1, 2) && returns 8005551234
? STREXTRACT("8005551234", "", ".", 1, 2) && returns 8005551234
? STREXTRACT("800-555-1234", "", ".", 1, 2) && returns 800-555-1234
答案 1 :(得分:2)
如果字段“phone”中没有连字符,请在另一个答案中由Frank评论,您可以使用LEFT(x,at())始终删除..例如
replace Phone with left( phone, at( ".", phone ) -1 );
for at( ".", phone ) > 0
如果你有一个带小数的格式作为手机的占位符,例如
1.800.TRY.MORE。
您可能必须使用“AT()”函数的可选第3个参数来指示“。”。你感兴趣的实例。在1.800的例子中......你可以尝试
replace Phone with left( phone, at( ".", phone, 4) -1 );
for at( ".", phone, 4 ) > 0
AT()函数基本上是
查找字符串“Y”中的“X”,并可选择查找“n”实例,例如 AT(X,Y,n)
希望这有帮助。
答案 2 :(得分:0)
如果这是一个数字,试试这个。
MyNewValue = INT(8005551234.000000)
或 MyNewValue = INT(MyTable.MyFieldName)
如果这是一个字符串,请尝试:
MyNewValue = INT(VAL("8005551234.000000"))
或 MyNewValue = INT(VAL(MyTable.MyFieldName))
要查看它的类型,请在命令窗口中执行此操作:
USE myTableName
DISPLAY STRUCTURE
答案 3 :(得分:0)
*Make Numeric value to String value nilai=01230045600.00789000 ?makestr(nilai) &&result => 1230045600.00789 function makestr(nilai) cNum1=alltrim(str(int(nilai))) nNol=0 for i=1 to len(cNum1) if right(left(cNum1,i),1)="0" then nNol=nNol+1 endif endfor cnilai=str(nilai,20,10) if nNol>0 then cnilai=alltrim(strtran(cnilai,"0"," ",nNol)) else cnilai=alltrim(strtran(cnilai,"0"," ")) endif cnilai=alltrim(strtran(cnilai," ","0")) return cnilai
答案 4 :(得分:-2)
使用STR()函数。例: 1.创建一个光标,其中一个数字字段表示您导入的数据,另一个字符串字段用于转换 2.插入你的数字电话# 3.用字符串替换数字电话# 4.浏览结果
CREATE CURSOR xphone (nphone n(17,6), cphone c(10))
INSERT INTO xphone (nphone) VALUES (8005551234)
REPLACE cphone WITH STR(nphone)
BROWSE