我有一个 python 脚本,可以从 MySQL 数据库中提取查询信息。
if 'IMPALA_AUDIT' in table:
query = "SELECT ID, EVENT_TIME, ALLOWED, SERVICE_NAME,
lower((REPLACE(USERNAME,'@UED.NET', ''))), IMPERSONATOR, IP_ADDR,
OPERATION, QUERY_ID, SESSION_ID, STATUS, DATABASE_NAME, OBJECT_TYPE,
TABLE_NAME, PRIVILEGE, REPLACE(REPLACE(OPERATION_TEXT,CHAR(X'0D'),'
'),CHAR(X'0A'),' ') FROM " + table + ";"
pull.create_data_file(query, 'IMPALA_AUDIT.DATA1')
我试图将 OPERATION_TEXT 的结果限制为 10 个字符。 这是我尝试过的:
REPLACE(REPLACE LEFT((OPERATION_TEXT, CHAR(X'0D'),' '),10),CHAR(X'0A'),' ')
还有其他几个类似的更改,但没有运气。
最佳答案
从您的问题来看,尚不清楚为什么 LEFT(CONVERT(OPERATION_TEXT USING utf8),10)
或 LEFT(UNHEX(OPERATION_TEXT),10)
不返回您想要的结果。 here is a link to the relevant documentation on CONVERT 。 Here's the link for UNHEX
我很确定错误的根源不是在十六进制格式的表示中转义单引号,这不是 MySQL 的方式。
关于python - 限制 mysql 查询中的 str 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47367144/