- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个带有查找表的查找组件 a,该查找表重新设置具有 3 个可能值的 varchar(4)
列:“T”、“R”或“”(空字符串)。
我正在使用 OLE DB 连接作为查找表,并尝试直接访问该表,并在列上使用 RTRIM()
指定查询,以确保该字符串是空的,而不是“一定长度的空白字符串”。
如果我将缓存模式设置为“部分缓存”,则一切正常(直接读取表或使用修剪查询),并且输入表的空字符串与相应的查找表行正确匹配.
但是,如果我将缓存模式更改为“完全缓存”,则根本不会匹配任何空字符串。
我已检查查找表和输入表中的数据类型 DT_STR
和长度 4 是否相同。
有什么可以解释这种行为吗?可以修改吗?
注意:这不是已记录的空值问题。这是关于空字符串的。
最佳答案
在某个地方,您有尾随空格,无论是在源代码中还是在查找中。
考虑以下源查询。
SELECT
D.SourceColumn
, D.Description
FROM
(
VALUES
(CAST('T' AS varchar(4)), 'T')
, (CAST('R' AS varchar(4)), 'R')
, (CAST('' AS varchar(4)), 'Empty string')
, (CAST(' ' AS varchar(4)), 'Blanks')
, (NULL, 'NULL')
) D (SourceColumn, Description);
对于我的查找,我将上述查询限制为仅 T、R 和空字符串行。
您可以看到,对于 5 个源行,T、R 和空字符串匹配并转到匹配输出路径。当我使用 NULL 或显式使用空格时,没有匹配。
如果我将查找模式从“完全缓存”更改为“部分”,则 NULL 继续不匹配,而显式空格会匹配。
在完全缓存模式下,查找转换执行源查询并将数据保存在正在执行 SSIS 的计算机本地。此查找将使用 .NET 相等规则进行精确匹配。在这种情况下,''
将不会匹配 ' '
。
但是,当我们将缓存模式更改为 None 或 Partial 时,我们将不再依赖 .NET 匹配规则,而是使用源数据库的匹配规则。在 TSQL 中,''
将匹配 ' '
要使完整缓存模式按预期工作,您需要在源和/或查找转换中应用 RTRIM
。如果您确信 RTRIM 无法在您的源代码中工作,请添加派生列转换,然后在那里应用您的 RTRIM,但我发现最好滥用数据库而不是 SSIS。
Biml(商业智能标记语言)描述了商业智能平台。 BIDS Helper ,是 Visual Studio/BIDS/SSDT 的免费插件,我们将使用它来将下面的 Biml 文件转换为 SSIS 包。
以下 biml 将生成
<Biml xmlns="http://schemas.varigence.com/biml.xsd">
<Connections>
<OleDbConnection Name="CM_OLE" ConnectionString="Data Source=localhost\dev2012;Initial Catalog=tempdb;Provider=SQLNCLI11.0;Integrated Security=SSPI;" />
</Connections>
<Packages>
<Package ConstraintMode="Linear" Name="so_26719974">
<Tasks>
<Dataflow Name="DFT Demo">
<Transformations>
<OleDbSource
ConnectionName="CM_OLE"
Name="OLESRC Source">
<DirectInput>
SELECT
D.SourceColumn
, D.Description
FROM
(
VALUES
(CAST('T' AS varchar(4)), 'T')
, (CAST('R' AS varchar(4)), 'R')
, (CAST('' AS varchar(4)), 'Empty string')
, (CAST(' ' AS varchar(4)), 'Blanks')
, (NULL, 'NULL')
) D (SourceColumn, Description);
</DirectInput>
</OleDbSource>
<Lookup
Name="LKP POC"
OleDbConnectionName="CM_OLE"
NoMatchBehavior="RedirectRowsToNoMatchOutput"
>
<DirectInput>
SELECT
D.SourceColumn
FROM
(
VALUES
(CAST('T' AS varchar(4)))
, (CAST('R' AS varchar(4)))
, (CAST('' AS varchar(4)))
) D (SourceColumn);
</DirectInput>
<Inputs>
<Column SourceColumn="SourceColumn" TargetColumn="SourceColumn"></Column>
</Inputs>
</Lookup>
<DerivedColumns Name="DER Default catcher" />
<DerivedColumns Name="DER NoMatch catcher">
<InputPath OutputPathName="LKP POC.NoMatch" />
</DerivedColumns>
</Transformations>
</Dataflow>
</Tasks>
</Package>
</Packages>
</Biml>
关于sql-server - 使用完整缓存时,查找组件无法匹配空字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26719974/
我正在尝试用 Java 构建一个字符串,该字符串的长度最多为 3,最少为 1。 我正在根据整数数组的内容构建字符串,如果数组的内容为 -1,我想在字符串中输出一个空字符。否则字符串将包含整数的字符版本
我有一个类,其中有一个方法可以在字符串中包含 NUL 字符的情况下终止程序。具体表达是这样的: stringVar.indexOf('\u0000') < 0 这个字符串是通过 Scanner 从用户
我有一个 wchar_t 数组。我需要在数组中的特定位置添加一个 unicode 空字符。 wchar_t var1[100]; var1[79] = '\u0000'; 我尝试了上面的方法,但出现以
好吧,这听起来可能是重复的,但我已经尝试了所有可能性,例如 str.strip()、str.rstrip()、str.splitline (),还 if-else 检查像: if str is not
System.out.println("-----------------------------------------------------------"); System.out.pr
我有一个奇怪的问题。我从公司内部的许多不同应用程序接收数据,并将这些数据显示在网站上。根据发送数据的系统,数据本身可能在字符串中包含一些奇怪的字符。我的问题是我有一个用户可以搜索以允许其中包含此数据的
我遇到了 aSSL ,这似乎有几年历史了,想知道是否有人有其他“安全”AJAX 连接代码示例?显然,这不如使用 SSL 证书安全,但使用 null character SSL在那里进行攻击(最近针对
我有一个类似于以下内容的 pyspark 数据框: df = sql_context.createDataFrame([ Row(a=3, b=[4,5,6],c=[10,11,12], d='b
我有以下要执行的查询: MyModel.objects.annotate(current_name=Coalesce('nickname', 'name')).order_by('current_na
每当 rails 变量等于 nil(或者实际上每当我使用 rails 代码(参见第 3 个代码示例))时,我的 html 中就会得到一串空字符。 new.html.haml %h1.editable.
我是一名优秀的程序员,十分优秀!