【问题标题】:Equivalent MemSQL query for MySQL queryMySQL 查询的等效 MemSQL 查询
【发布时间】:2018-10-29 12:43:43
【问题描述】:

任何人都可以帮助我将下面的 MySQL 查询转换为 MemSQL 查询。

SELECT TABLE_SCHEMA AS `schema`, TABLE_NAME AS `name`
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME COLLATE utf8_general_ci IN (N'Record')
  AND TABLE_SCHEMA = 'test'

需要解决以下错误

[错误代码:1064 SQL 状态:42000] 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 'COLLATE utf8_general_ci IN (N'Record')AND TABLE_SCHEMA = 'test'' 附近使用正确的语法

【问题讨论】:

  • 看起来不支持 collat​​e 子句(那里)。也许是lower(TABLE_NAME) = 'record'
  • N'Record' 感觉就像 SQL Server (MSSQL) 语法。编辑接缝它也适用于 MySQL。 ...“您可以使用 N'literal'(或 n'literal')在国家字符集中创建字符串”来源dev.mysql.com/doc/refman/8.0/en/string-literals.html
  • 我在 memsql 文档中搜索了它接缝你不能像 MySQL 一样在 SELECT 中动态使用 COLLATE 可以(dev.mysql.com/doc/refman/8.0/en/charset-collate.html)至少我找不到它......当你使用临时表作为解决方法,因为它在那里接缝,您可以定义 COLLATE 吗? docs.memsql.com/sql-reference/v6.5/create-table
  • @RaymondNijland,国家字符文字是 ANSI/ISO SQL 标准,大多数 dbms 产品都支持。
  • "国家字符文字是 ANSI/ISO SQL 标准,并得到大多数 dbms 产品的支持 "是的,我已经读过 @jarlh "标准 SQL 定义 NCHAR 或 NATIONAL CHAR" 源 dev.mysql.com/doc/refman/8.0/en/charset-national.html.. 但是并非所有人都可以访问 ANSI/ISO SQL 标准文档...

标签: mysql sql database singlestore


【解决方案1】:

你可以使用

SELECT TABLE_SCHEMA AS `schema`, TABLE_NAME AS `name`
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME IN ('Record')
  AND TABLE_SCHEMA = 'test';

区分大小写,或

SELECT TABLE_SCHEMA AS `schema`, TABLE_NAME AS `name`
FROM INFORMATION_SCHEMA.TABLES
WHERE lower(TABLE_NAME) IN ('record')
  AND TABLE_SCHEMA = 'test';

不区分大小写。

那里不支持 COLLATE 子句,也不支持 N'string'。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-19
    • 1970-01-01
    • 2022-01-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多