2017-01-24 4 views
1

I次の表があります。構文エラー

CREATE TABLE Book(article int, subArticle numeric); 

2ndフィールド - 第一記事が1.1となるようにsubArticleは、記事のsubarticlesが含まれている、1.2、などsubarticlesを

記事は「1.2」subarticleを持つことができない第二 -

(1, 1.1), 
(2, 1.2); 

2行目が間違っているように:

表のような値があります。それは '2.1'、...サブパーティクルを持っています。

「subarticle」フィールド内の記事部分(「1」「1.2」から)フィールド「物品」による実物品値に対応するIは、行だけを比較して残すために、次のクエリを実行:

SELECT * 
FROM Book 
WHERE LEFT(subArticle, CHARINDEX('.', subArticle) - 1) = article; 

ただし、WHERE句で構文エラーが発生しません。 WHERE句なし - エラーはありません。 値を比較して比較する必要がありますか?私は試しましたが、成功もありません。その後、正しいキャストは何ですか?

P.S. sqlite3を使用

答えて

-1

CharIndexは文字列です。文字(したがって、名前)。あなたは数値でそれを使うことはできません。

subArticle私が考える最良の選択肢は、スキーマを再構築して、動作するまでこのクエリをマングルしようとしないことです。

これはちょうど自分自身を指す再帰的キーでなければならないので、そのタイプはintである必要があります。なぜあなたは現在、そこに複数の部分の値を持っているのか分かりません。したがって、あなたがあなたのスキーマを制御でき、それが許可されていればそれを変更/再考してください。

+0

とSQL Serverの構文を使用しようとしている私はあなたが(私はSQL-初心者です)何を意味するのかわかりません。 記事からサブトピックをインデントする必要があるので、記事1:サブパーティクル1.1など 正しく取得した場合、 '1.1'はintで表現することはできませんが、数値として表すことができます – Shurov