2016-10-18 3 views
0

私はそれが何らかの理由では、MSSQL構文エラー

Invalid column name 'L'. 

があることを示すエラーを与えるノード-MSSQLモジュールと、次のクエリを使用すると、それはのようなステートメント内の値が列であると考えをnodejs名。

'SELECT TOP 10 * From [Products] WHERE [Code] LIKE "%LO%" 

は、私は(MSSQLのNPMの例から)

FULL CODEを使用する必要がある特別な構文のいくつかの並べ替えがあります:

var express = require('express'); 
var app = express(); 

app.get('/', function (req, res) { 

    var sql = require("mssql"); 

    // config for your database 
    var config = { 
     user: 'username', 
     password: 'password', 
     server: '192.168.0.165\\database', // You can use 'localhost\\instance' to connect to named instance 
     database: 'Products', 

     options: { 
      encrypt: false // Use this if you're on Windows Azure 
     } 
    } 

    // connect to your database 
    sql.connect(config, function (err) { 

     if (err) console.log(err); 

     // create Request object 
     var request = new sql.Request(); 

     // query to the database and get the records 
     request.query('select TOP 10 * From [Products] WHERE [Code] LIKE "%LO%"', function (err, recordset) { 

      if (err) console.log(err) 
       var items = []; 
       recordset.forEach(function(row){ 
        items.push(row.Code); 
       }) 

      res.send(items); 

     }); 
    }); 
}); 

var server = app.listen(5000, function() { 
    console.log('Server is running..'); 
}); 
+1

フルコード+ SQLを示しています。あなたは明らかにその中に少なくとも1つの ''がありません... –

+2

検索文字列の前後に二重引用符はありますか?その場合は、その前後に2つの一重引用符と、その文を終了する別の一重引用符が必要です。しかし、はい、より多くを示すことは、私たちのために良いです。 –

+0

コードが更新されました。 'select TOP 10 * [製品] WHERE [コード] LIKE \'%lo%\ '' 私は一重引用符に切り替えてから2つをエスケープしなければならなかったので検索文字列に使用されています... mssqlでは二重引用符が不正ですか? – Query

答えて

1

SQLステートメント内の単一引用符を使用している場合、あなたはエスケープする必要があります' キャラクター。例えば

'SELECT TOP 10 * FROM [Products] WHERE [Code] LIKE \'%LO%\''