mysql - 子字符串和字符索引的 SQL 语法错误
问题描述
我有这个脚本:
update edi_file_steps
set
user_id= table_B.id,
message= SUBSTRING( message, 1, CHARINDEX('[',message)-1)
from edi_file_steps table_A INNER JOIN GU_User table_B
where message LIKE '%Downloaded%'
AND table_B.login = SUBSTRING(
message,
CHARINDEX('[', message) + 1,
len(message) - CHARINDEX('[',message)-1
);
我在第 4 行收到 sql 语法错误:意外令牌,我的脚本有什么问题吗? sql
解决方案
如果您使用的是 SQL Server,则您的JOIN
. 而且表别名很差。也许这可以满足您的要求:
update fs
set user_id = u.id,
message = SUBSTRING(fs.message, 1, CHARINDEX('[', fs.message)-1)
from edi_file_steps fs INNER JOIN
GU_User u
on u.login = SUBSTRING(fs.message, CHARINDEX('[', fs.message)+1, len(fs.message)- CHARINDEX('[',fs.message)-1 )
where message LIKE '%Downloaded%' ;
编辑:
在 MySQL 中,这将是:
update edi_file_steps fs INNER JOIN
GU_User u
on fs.message like concat('%[', u.login, ']%')
set user_id = table_B.id,
message = substring_index(fs.message, '[', 1)
where message LIKE '%Downloaded%' ;
推荐阅读
- facebook - Facebook APP - 如何让我的 Facebook 应用上线
- elixir - Elixir/Phoenix - 以 @ 为前缀的变量是什么(例如 - @type 或 @impl)
- python - runfile('C:/Users/Admin/.spyder-py3/temp.py', wdir='C:/Users/Admin/.spyder-py3')
- python - 接收类型作为参数的 Python3 类装饰器隐式调用这些类型的构造函数
- python - 无法运行烧瓶服务器的 pyinstaller 可执行文件。ValueError:找不到语言“ru”的字典
- c++ - Visual Studio Code 中的详细模式构建 C/C++ 文件
- python - 在pycharm中调试pytorch代码(可行性)
- javascript - Chrome 的 javascript 调试器与互联网上大多数文章的对比?
- c++ - physx 多线程复制转换数据
- python - 字典中不存在键