怎么把access字段里的非汉字字符去掉
1个回答
展开全部
你这个问题有点意思。以下的做法我已测试过,可行。
1、首先汉字的字符代码值到底是多少?实际上,汉字(包括汉字的标点符号)以及软键盘上的字符的字符代码值都是小于0的,而我们能在键盘上见到的字符(包括大小写的英文、英文标点、数字、数字上面的上标字符等)它们的字符代码值是正数0至255 。我们用asc()函数可以查看相应的值,比如:asc("a")=97 ;asc("国")=-17926 ;asc("《")=-24138 ;asc("Ⅷ")=-23816 ;asc("∑")=-24122 。有一点遗憾的是我并不知道纯汉字的代码值,但,我们只要保留小于0的代码值基本上就能达到你的要求。
2、可创建一个模块,在这个模块中创建一个公共函数(命名为noenglish),如如下:
Public Function noenglish(str As String) As String
For i = 1 To Len(str) '循环直至字符串结束
If Asc(Mid(str, i, 1)) < 0 Then noenglish = noenglish & Mid(str, i, 1)
'逐个提取字符串中的字符并判断代码值是否<0 ,是则并入noenglish。
Next i
End Function
3、函数创建完成后,利用上面的函数更新字段,SQL语句如下:
UPDATE 表1 SET 字段1 = noenglish(名称1),字段2 = noenglish(字段2);
如果是用查询设计器来设置的话,选择“更新查询”在“更新到”中分别输入noenglish([字段名称])
1、首先汉字的字符代码值到底是多少?实际上,汉字(包括汉字的标点符号)以及软键盘上的字符的字符代码值都是小于0的,而我们能在键盘上见到的字符(包括大小写的英文、英文标点、数字、数字上面的上标字符等)它们的字符代码值是正数0至255 。我们用asc()函数可以查看相应的值,比如:asc("a")=97 ;asc("国")=-17926 ;asc("《")=-24138 ;asc("Ⅷ")=-23816 ;asc("∑")=-24122 。有一点遗憾的是我并不知道纯汉字的代码值,但,我们只要保留小于0的代码值基本上就能达到你的要求。
2、可创建一个模块,在这个模块中创建一个公共函数(命名为noenglish),如如下:
Public Function noenglish(str As String) As String
For i = 1 To Len(str) '循环直至字符串结束
If Asc(Mid(str, i, 1)) < 0 Then noenglish = noenglish & Mid(str, i, 1)
'逐个提取字符串中的字符并判断代码值是否<0 ,是则并入noenglish。
Next i
End Function
3、函数创建完成后,利用上面的函数更新字段,SQL语句如下:
UPDATE 表1 SET 字段1 = noenglish(名称1),字段2 = noenglish(字段2);
如果是用查询设计器来设置的话,选择“更新查询”在“更新到”中分别输入noenglish([字段名称])
追问
没有明白oenglish = noenglish & Mid(str, i, 1)语句的意思。你的代码里,应该没有替换吧?我用了最笨的方法,就是一个一个替换,唉
追答
noenglish = noenglish & Mid(str, i, 1) 这里面就有替换啊。
因为上面有for i=1 to len(str)语句,前面有Asc(Mid(str, i, 1)) 0,if条件为false,不执行noenglish = noenglish & Mid(str, i, 1);
同理,i=3时,会执行noenglish = “国"&Mid(str, 3, 1),既noenglish="国"&"人",="国人"。
同理,i=4时,noenglish=“国人"&"民" ,="国人民"
……
这样最终结果noenglish="国人民",也就是说表达式 noenglish("国a人民2") 返回值为“国人民”。函数里的代码运行完后,noenglish的最后的值是什么最终函数就返回什么,哪怕noenglish=在代码的中间,而不在于最后一句一定要写成noenglish=……。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询