我在SSIS脚本中有下面的查询。
string query = "Select distinct " + ColumnNameForGrouping + " from " + TableName + "where flag like '%investigation%'" ;
它给出了以下错误消息。
System.Data.SqlClient.SqlException (0x80131904): Incorrect syntax near the keyword 'like'.
at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
at System.Data.SqlClient.SqlDataReader.TryConsumeMetaData()
at System.Data.SqlClient.SqlDataReader.get_MetaData()
at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, SqlDataReader ds)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean asyncWrite)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
at System.Data.SqlClient.SqlCommand.ExecuteReader()
at ST_6e1c49bc23064a7f8c0538ec0e69dd09.ScriptMain.Main()
ClientConnectionId:b5c340bb-5ec2-48cb-9d2a-fd5d1ead30bd
Error Number:156,State:1,Class:15
我猜它不喜欢单引号或百分号。你如何使用C#在SSIS脚本中编写WHERE - LIKE?
有关信息,在我只使用下面的查询而没有Where - LIKE子句之前,它工作正常。
string query = "Select distinct " + ColumnNameForGrouping + " from " + TableName
我正在使用Microsoft Server 2012。
谢谢大家的帮助。
韩的答案:
在那里放一个空格。它应该是+“其中标志像'%investigation%'”;如果名称包含空格或保留字,您也可以尝试在列名和表名之前添加括号。 - 汉族43分钟前