WHERE 子句中的语法错误(需要 CAST?)
Syntax error in WHERE clause (CAST required?)
我有以下 table:
CREATE TABLE Book(article int, subArticle numeric);
第二个字段 - 子文章包含文章的子文章,因此第一个文章有 1.1、1.2 等子文章
Table 的值如下:
(1, 1.1),
(2, 1.2);
因此第 2 行不正确 - 第 2 篇文章不能有“1.2”子文章。它有 '2.1',... 子文章。
我 运行 以下查询比较并仅保留那些行,其中 'subarticle' 字段中的文章部分(“1.2”中的“1”)对应于相应字段中的真实文章值 'article':
SELECT *
FROM Book
WHERE LEFT(subArticle, CHARINDEX('.', subArticle) - 1) = article;
但是WHERE子句中的语法错误失败了。没有 WHERE 子句 - 没有错误。
我需要转换值来比较它们吗?我试过了,但也没有成功。那么正确的演员表是什么?
P.S。使用 sqlite3
CharIndex 用于字符串,即。字符(因此得名)。你不能在数字上使用它。
由于 subArticle
似乎它应该是一个标识符,我认为最好的选择是重构您的模式,并且在它工作之前不要尝试破坏此查询。
真的,这似乎应该只是一个指向自身的递归键,所以它的类型应该是 int
。我不确定为什么你现在有一个 multi-part 值。因此,如果您可以控制您的架构并且您被允许,那么更改它/重新考虑它。
您正在尝试将 SQL 服务器语法与 SQLite
一起使用
https://www.sqlite.org/lang_corefunc.html
select *
from Book
where substr(subArticle,1,instr(subArticle,'.')-1) = article
我有以下 table:
CREATE TABLE Book(article int, subArticle numeric);
第二个字段 - 子文章包含文章的子文章,因此第一个文章有 1.1、1.2 等子文章
Table 的值如下:
(1, 1.1),
(2, 1.2);
因此第 2 行不正确 - 第 2 篇文章不能有“1.2”子文章。它有 '2.1',... 子文章。
我 运行 以下查询比较并仅保留那些行,其中 'subarticle' 字段中的文章部分(“1.2”中的“1”)对应于相应字段中的真实文章值 'article':
SELECT *
FROM Book
WHERE LEFT(subArticle, CHARINDEX('.', subArticle) - 1) = article;
但是WHERE子句中的语法错误失败了。没有 WHERE 子句 - 没有错误。 我需要转换值来比较它们吗?我试过了,但也没有成功。那么正确的演员表是什么?
P.S。使用 sqlite3
CharIndex 用于字符串,即。字符(因此得名)。你不能在数字上使用它。
由于 subArticle
似乎它应该是一个标识符,我认为最好的选择是重构您的模式,并且在它工作之前不要尝试破坏此查询。
真的,这似乎应该只是一个指向自身的递归键,所以它的类型应该是 int
。我不确定为什么你现在有一个 multi-part 值。因此,如果您可以控制您的架构并且您被允许,那么更改它/重新考虑它。
您正在尝试将 SQL 服务器语法与 SQLite
一起使用
https://www.sqlite.org/lang_corefunc.html
select *
from Book
where substr(subArticle,1,instr(subArticle,'.')-1) = article