在 MS Access 中,我有一列“測驗”:
| 測驗 |
|---|
| 1.1.8.5.200.484.56.1.27.85.266.6.3.332.1 入門測驗 Blabla |
| 7.55.41.6.4.77.4541.58.5654.123.2.2.123 我需要提取的另一個條目 |
| 測驗測驗新條目 |
我想顯示一個新列,其中洗掉第一個字母之前的所有內容,例如:
| 過濾列 |
|---|
| 入學考試布拉布拉 |
| 我需要提取的另一個條目 |
| 測驗測驗新條目 |
我嘗試使用 mid() 和 InStr() 函式,如下所示:
Select
mid([Test], InStr([Test], '[az-AZ]')) as FilteredColumn
From TableA;
這應該通過 InStr() 函式回傳字母的第一次出現,并使用該位置作為 mid() 函式的起點。
不幸的是,這不起作用。我也嘗試過使用 left() 而不是 mid() ,但沒有成功。
uj5u.com熱心網友回復:
您沒有描述錯誤,但我猜您遇到了Invalid procedure call or argument錯誤。發生的事情是這樣的:
- 該
InStr函式可以搜索字串,而不是模式- 所以當它找不到字串時它回傳 0
[az-AZ]
- 所以當它找不到字串時它回傳 0
- 該
Mid函式需要一個大于 0 的數字,因此會引發錯誤
解決方法是在字串中查找空格字符,如果存在則提取其后的部分:
SELECT IIf(InStr(Test, ' ') > 0, Mid(Test, InStr(Test, ' ') 1), Test)
FROM ...
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/349117.html
