WHERE 子句不适用于空值
WHERE clause not working with blank values
在下面的代码中,我尝试查询 Excel 文件的特定字段 "Username" 其中有空白 (= ''
)。但是没有任何内容 returned 到数据适配器。
例如,如果我指定 NOT LIKE 'thistext%'
,WHERE 子句将 return 数据,但再次省略空格。
有什么方法可以更好地对子句进行编码吗?
我读到如果字段为空并且需要转换为 DB NULL(或填充一个值)时会出现问题,但不确定如何操作。
$connection.ConnectionString = $connectstring
$connection.Open()
$objOleDbCommand.Connection = $connection
$objOleDbCommand.CommandText = "SELECT * FROM [$strSheetName] WHERE [Username] = ''"
$objOleDbAdapter.SelectCommand = $objOleDbCommand
$objOleDbAdapter.Fill($objDataTable)
$objDataTable | Export-Csv "C:\output\MyData_$dateandtime.csv" -NoTypeInformation
$connection.Close()
试试这个来覆盖空白和空值。
Select * from [$strSheetName] where [Username] = '' OR [USERNAME] IS NULL
请注意,从技术上讲,这本身不是 powershell 问题,您可能会遇到与其他电子表格和数据库相同的问题。
在下面的代码中,我尝试查询 Excel 文件的特定字段 "Username" 其中有空白 (= ''
)。但是没有任何内容 returned 到数据适配器。
例如,如果我指定 NOT LIKE 'thistext%'
,WHERE 子句将 return 数据,但再次省略空格。
有什么方法可以更好地对子句进行编码吗?
我读到如果字段为空并且需要转换为 DB NULL(或填充一个值)时会出现问题,但不确定如何操作。
$connection.ConnectionString = $connectstring
$connection.Open()
$objOleDbCommand.Connection = $connection
$objOleDbCommand.CommandText = "SELECT * FROM [$strSheetName] WHERE [Username] = ''"
$objOleDbAdapter.SelectCommand = $objOleDbCommand
$objOleDbAdapter.Fill($objDataTable)
$objDataTable | Export-Csv "C:\output\MyData_$dateandtime.csv" -NoTypeInformation
$connection.Close()
试试这个来覆盖空白和空值。
Select * from [$strSheetName] where [Username] = '' OR [USERNAME] IS NULL
请注意,从技术上讲,这本身不是 powershell 问题,您可能会遇到与其他电子表格和数据库相同的问题。