在我使用的一个ms-access表中,我们有一个设置大小的文本字段。 在该字段的末尾,有一些额外的代码会根据情况而有所不同。 我正在寻找一种方法来删除其中一个代码,但即使最后一部分被字段最大大小截断。
让我们调用字段“field”和我想要删除“abc-longcode”的代码。
如果我将替换SQL函数与字符串abc-longcode一起使用,则查询将仅在代码完成时起作用。
如果我还想要我的更新查询(除了在我的字段末尾删除此特定代码之外什么都不做)以处理不完整的代码,那将如何转换为ms-SQL?
必须删除(或准确地用“”替换)所有以下内容(当然是示例,而不是真实代码):
abc-longcode
abc-longcod
abc-longco
abc-longc
abc-long
abc-lon
abc-lo
abc-l
显然,我可以通过几个查询来做到这一点。每一个都替换了一个预期的截断代码......但它听起来不是最佳的。
此外,当字段足够大以获取所有代码时,有时可能会在最后添加额外的细节,我也想保留,所以我不能只是寻找“abc-l”并删除所有内容接下来是:\
此查询(或查询,如果我找不到更好的方法)将直接保存到.mdb数据库中。
因此,虽然我可以想到在ms-sql查询之外执行此操作的几种方法,但它对我没有帮助。
有任何帮助吗? 感谢。
答案 0 :(得分:1)
您可以编写一个自定义VBA替换方法来替换任何给定的情况{“abc-longcode”,...“abc-l”}。这与“几个查询”的想法基本相同,只是它只是一个查询。我的VBA很生疏,但有点像:
public function ReplaceCodes(str as string) as string
dim returnString as string
returnString = str
returnString = replace(returnString,"abc-longcode","")
// ... etc...
ReplaceCodes = returnString
end function
我可能在替换时得到了错误的参数顺序:)
答案 1 :(得分:0)
我会使用自己的自定义函数来使用split
函数来获取字符串的第一部分。然后,您可以在更新查询中使用该值。
Public Function FirstPart(thetext As String) As String
Dim ret As String
Dim arrSplitText As Variant
arrSplitText = Split(thetext, "-")
ret = arrSplitText(0)
FirstPart = ret
End Function
答案 2 :(得分:0)
你能用:
Left(FieldX,InStr(FieldX,"abc-")-1)
编辑重新评论
如果有空格或其他标准分隔符:
IIf(InStr(InStr(FieldX, "abc-"), FieldX, " ") = 0, Left(FieldX, InStr(FieldX, "abc-") - 1), Replace(FieldX, Mid(FieldX, InStr(FieldX, "abc-"), InStr(InStr(FieldX, "abc-"), FieldX, " ") - InStr(FieldX, "abc-")), ""))