WHERE LIKE 在 SSIS C# 脚本中

WHERE LIKE in SSIS C# script

我在 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。

感谢大家的帮助。

韩的回答:

在 where 前加一个 space。它应该是 + " where flag like '%investigation%'" ;如果名称包含 space 或保留字,您还可以尝试在列名和 table 名称前添加方括号。 – 韩 43 分钟前