我正在为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可以返回并且仍然有效。
答案 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会知道。