gpt4 book ai didi

sql - 去除 SELECT 中的非数字字符

转载 作者:行者123 更新时间:2023-12-04 06:42:26 47 4
gpt4 key购买 nike

在 MS Access 2007 项目报告中,我有以下(已编辑)查询:

SELECT SomeCol FROM SomeTable

问题是, SomeCol 显然包含一些不可见的字符。例如,我看到一个结果返回为 123456SELECT LEN(SomeCol) 返回 7 。当我将结果复制到 Notepad++ 时,它显示为 ?123456

该列设置为 TEXT 。我无法控制此数据类型,因此无法更改它。

如何修改我的 SELECT 查询以去除任何非数字内容。我怀疑 RegEx 是要走的路……或者,是否有 CASTCONVERT 函数?

最佳答案

您提到为此使用正则表达式。 Access 的数据库引擎确实不直接支持正则表达式。但是,您似乎愿意在查询中使用 VBA 用户定义函数……而 UDF 可以使用正则表达式方法。与遍历输入字符串的每个字符并仅将您想要保留在新输出字符串中的那些字符相比,该方法应该简单、容易且执行速度更快。

Public Function OnlyDigits(ByVal pInput As String) As String
Static objRegExp As Object

If objRegExp Is Nothing Then
Set objRegExp = CreateObject("VBScript.RegExp")
With objRegExp
.Global = True
.Pattern = "[^\d]"
End With
End If
OnlyDigits = objRegExp.Replace(pInput, vbNullString)
End Function

以下是立即窗口中该函数的示例,其中“x”字符作为不可见字符的代理。 (任何未包含在“数字”字符类中的字符都将被丢弃。)

? OnlyDigits("x1x23x")
123

如果这是您想要的输出,只需在查询中使用该函数即可。

SELECT OnlyDigits(SomeCol) FROM SomeTable;

关于sql - 去除 SELECT 中的非数字字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12563701/

47 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com