我试图研究这个命令,但我似乎找不到具体的解释。
什么是“索引时的情况”?它有什么作用?它与案例有什么不同? 什么时候使用? 这可用于其他RDMS还是特定于Teradata? 如果你能提供一些例子,我会的。
非常感谢你。
sel
CASE WHEN .00 = 0 THEN 0||'.'
ELSE .00
END
,CASE WHEN INDEX (.00,'.') = 0 THEN 0||'.'
ELSE .00
END
结果:
0. .00
答案 0 :(得分:1)
Index()是Teradata函数。你可以阅读它here。您可以对其他数据库引擎执行相同的操作,但不能使用该语法。
答案 1 :(得分:1)
CASE
。查找字符串位置的功能不同。
在Oracle中,使用INSTR
并输入字符串以搜索第二个:
INSTR('abcd', 'b')
在SQL Server中,使用CHARINDEX
并将字符串首先搜索:
CHARINDEX('b', 'abcd')
上述每一项的返回值均为2
。在默认安装中,Oracle函数区分大小写,而SQL Server搜索则不区分,但最好不要假设它们。
答案 2 :(得分:1)
SELECT -- Performs logical test of two numeric values (.00 = 0)
CASE WHEN .00 = 0
THEN 0||'.'
ELSE .00
END
-- Checks for the location of the of '.' in the string '.00'.
-- In this test it returns 1. 1 <> 0.
, CASE WHEN INDEX (.00,'.') = 0
THEN 0||'.'
ELSE .00
END
INDEX()
是ANSI SQL:2008标准的Teradata扩展。 POSITION()
是ANSI SQL:2008兼容的等价物。 POSITION('.' IN '.00)