Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

在查询里如何判断记录从右边数过去第二个是中文还是英文?

qixiang  发表于:2011-02-25 11:56:30  
复制

在查询里如何判断记录从右边数过去第二个是中文还是英文?

 

Top
煮江品茶 发表于:2011-02-25 14:52:25

1、先写一个自定义函数:
Function ABC(str As String) As Boolean
Dim b As Boolean
b = Asc(str) >= Asc("A") And Asc(str) <= "Z"
b = b Or Asc(str) >= Asc("a") And Asc(str) <= "z"
If b = True Then
    ABC = True
Else
    ABC = False
End If
End Function

 

2、在查询用引用该函数
select 某字段,iif(ABC(mid(某字段,2,1))=true,"英文字母","非英文字母") as 判断结果 from 表名称



qixiang 发表于:2011-02-25 15:12:34

煮江品茶老师:

我按照你的做法,运行查询时出错,请帮我看看以下附件,错在哪里?谢谢!!!

点击下载此附件

煮江品茶 发表于:2011-02-25 15:24:44

呵呵,是我写错了一点。

 

你重新试试:

Function ABC(str As String) As Boolean
Dim b As Boolean
b = Asc(str) >= Asc("A") And Asc(str) <= Asc("Z")
b = b Or Asc(str) >= Asc("a") And Asc(str) <= Asc("z")
If b = True Then
    ABC = True
Else
    ABC = False
End If
End Function


 

此外判断右数第二个字符,可以写为:

SELECT 物料名称, IIf(ABC(Mid([物料名称],Len([物料名称])-1,1))=True,"英文字母","非英文字母") AS 判断结果
FROM Table1;



qixiang 发表于:2011-02-25 15:39:19

煮江品茶老师:

不好意思!没有一起问清楚。

如果还有数字,标点,要如何判断英文,中文,数字,标点

非常感谢!



煮江品茶 发表于:2011-02-25 15:48:16

可参见《一份崇高两份伟大》一文中的模块中的函数。

 

处理这类问题,就是找到各类字符的ASC码的范围而已。

 

简体汉字的范围: -20319 To -10247
英文字母的范围: 65 To 90, 97 To 122
阿拉伯数字的范围: 48 To 57
剩下的就是符号、全角英文字母和阿拉伯数字、繁体汉字、其他字符了



qixiang 发表于:2011-02-25 15:58:17

煮江品茶老师:

太复杂了,我是初学者,不会,麻烦您在我附件里帮我做个示范!拜托了!!!



qixiang 发表于:2011-02-25 15:59:07
上传附件:点击下载此附件

煮江品茶 发表于:2011-02-25 16:10:27

太懒了!

 

1、将自定义函数写为:

Public Function CharType(mystr As String) As String
Dim i As Long
i = Asc(mystr)
Select Case i
    Case -20319 To -10247
        CharType = "简体汉字"
    Case 65 To 90, 97 To 122
        CharType = "英文字母"
    Case 48 To 57
        CharType = "阿拉伯数字"
    Case Else
        CharType = "符号等"
End Select
End Function

2、在查询中引用:

SELECT Table1.物料名称, CharType(Mid([物料名称],2,1)) AS 判断结果
FROM Table1;

 

 

 

点击下载此附件

qixiang 发表于:2011-02-25 16:30:47
非常精彩!!!谢谢!!!

qixiang 发表于:2011-02-25 16:43:56

煮江品茶老师:

我是说从右边数起的第二个字,您的是从左边数起,要怎么做?



总记录:10篇  页次:1/1 9 1 :