在较大的存储过程中使用与以下类似的代码:
df = pd.DataFrame({'a':[1,2,3,4]})
#slow, working only with unique values
df['b'] = df['a'].apply(lambda x: df.loc[df.a != x, 'a'].mean())
#faster
df['b1'] = (df['a'].sum() - df['a']) / (len(df) - 1)
print (df)
a b b1
0 1 3.000000 3.000000
1 2 2.666667 2.666667
2 3 2.333333 2.333333
3 4 2.000000 2.000000
理论上,以上代码应始终返回与查询相同的结果
DECLARE @Foo NVARCHAR(500)
SET @Foo = (SELECT [MyColumn] FROM [MyTable] WHERE ID = 1) -- May be numeric or text
SELECT * FROM [MyTable] WHERE [MyColumn] = @Foo
但是,它经常返回SELECT * FROM [MyTable] WHERE ID = 1
。这样做的原因是,变量(0 Rows)
并不总是以与表相同的格式存储找到的值。
例如,表可能包含值@Foo
。但是,上面的select语句会将其存储为2152437
。
我试图通过使用代码
解决此问题@Foo = 2.01512e+007
问题是,尽管它允许大整数以与数据库中找到的格式相同的格式存储在IF ISNUMERIC((SELECT [MyColumn] FROM [MyTable] WHERE ID = 1)) = 1 SET @Foo = Str((SELECT [MyColumn] FROM [MyTable] WHERE ID = 1))
ELSE SET @Foo = (SELECT [MyColumn] FROM [MyTable] WHERE ID = 1)
中,但它会使小数舍入。我也尝试过使用代码
@Foo
但是,这会将多余的0加到找到的值的末尾。因此,这也不是一种选择。
考虑到在数据库中找到的值可能不是数字,我如何在将所选值存储到变量中时保留数据库中使用的格式?
但是,当找到小数时
答案 0 :(得分:2)
这不是确切的解决方案,但是您可以尝试:
<Modal
show={this.state.show}
onHide={this.handleClose}
bsSize="large"
aria-labelledby="contained-modal-title-lg"
>
<Modal.Header>
<Modal.Title className="f2 pa0">welcome modal.</Modal.Title>
</Modal.Header>
<Modal.Body>
<ol>
<li className="mb-3">hello <strong>There</strong>.</li>
<li className="mb-3">hi!<b>welcome back</b> <i>MR0B</i> to intro.</li>
</ol>
<div className="form-group mt-4">
</div>
</Modal.Body>
<Modal.Footer>
<Button onClick={this.handleClose}>Close</Button>
<Button className="link dim mb2 dib white bg-purple pointer">continue</Button>
</Modal.Footer>
</Modal>
但是,我真的很怀疑您要做什么。为什么要将数字值保存在变量中?
第二,您遇到的问题是因为该列是使用浮点表示形式存储的。如果您切换到定点表示形式(SELECT *
FROM [MyTable]
WHERE CAST([MyColumn] as NVARCHAR(500)) = @Foo;
/ numeric
,则您的代码将按预期工作。这可能是解决此问题的最简单方法。