访问2013 SQL,在指定的单元格中搜索:

时间:2017-09-28 16:00:33

标签: sql ms-access

我正在为Access 2013数据库编写SQL语句。我有两张与这两张相似的桌子:

T1:

ticketID         endResult
1
2

T2:

ticketID         Description
1                Return: other text
2                some description

目标是只要有'更新T1.endResult Fixed: Return:'在T2.Description列中。这一切都在Access 2013中使用SQL语句完成。目前我正在做以下事情:

UPDATE T1
INNER JOIN T2 ON T1.ticketID = T2.ticketID
SET T1.endResult = ('Fixed: ' & LEFT(T2.Description, :))
WHERE (T1.endResult IS NULL AND (InStr(T2.Description, :,1)))

每当我运行它时,访问会提示我输入值:。我怎么能只为那一个符号搜索描述?现在我使用LEFT:以及可能有其他值而不是Return可以返回并且仍然有效。

1 个答案:

答案 0 :(得分:3)

有些事情是错误的。

'Fixed: ' & LEFT(T2.Description, :)
- 你需要告诉它从描述返回多少个字母。

使用INSTR在文字中找到的位置:
'Fixed: ' & LEFT(Description, INSTR(Description,":")-1)

(T2.description IS NULL AND (InStr(T2.Description, :,1)))
  - 说明不能同时 NULL 并包含

尝试:

UPDATE T1 INNER JOIN T2 ON T1.ticketID = T2.ticketID
SET endresult = 'Fixed: ' & LEFT(Description, INSTR(Description,":")-1)
WHERE INSTR(Description,":")<>0  

INSTR(Description,":")将返回字符串中文本的位置,如果不存在则返回0。 WHERE子句只需要检查INSTR是否返回0以外的其他内容。

如果字段名称只显示在其中一个表中,则除了在连接中之外,您不必完全限定字段名称。 说明仅出现在 T2 中,因此SQL会知道。