我想检查一个模式在sql中,如果有任何在该表达式(或表格单元格)以外的数字它应该返回1.如果整个单元格只有数字值它应该返回0SQL表达式匹配
EQ:
case when '200290' like [anything other than numbers]
then 1
else o
我想检查一个模式在sql中,如果有任何在该表达式(或表格单元格)以外的数字它应该返回1.如果整个单元格只有数字值它应该返回0SQL表达式匹配
EQ:
case when '200290' like [anything other than numbers]
then 1
else o
在SQL Server中,你可以使用像(我不写你整体功能):
DECLARE @t varchar(100) = '231321321321'
SELECT CASE WHEN PATINDEX('%[^0-9]%', @t) > 0 THEN 1
ELSE 0 END
我希望我可以像你一样工作! – user708477
@ user708477这是一个常见问题和常见解决方案。 'ISNUMERIC()'不能按预期工作,所以我们必须提出解决方法! – JNK
从Teradata 13.10开始,您需要将PATINDEX()功能复制为UDF。 –
SELECT CASE CHARACTERS(OTRANSLATE(<your_string>,'a1234567890','a'))
WHEN 0 THEN 0 ELSE 1 END;
例:
-- BTEQ Enter your SQL request or BTEQ command:
SELECT CASE CHARACTERS(OTRANSLATE('12345','a1234567890','a'))
WHEN 0 THEN 0 ELSE 1 END;
*查询完成。找到一行。一列返回。 *总经过时间为1秒。
<CASE expression>
------------------
0
SELECT CASE CHARACTERS(OTRANSLATE('1a23b45c','a1234567890','a')) WHEN 0 THEN 0 ELSE 1 END;
*查询完成。找到一行。一列返回。 *总经过时间为1秒。
<CASE expression>
------------------
1
你在使用什么DB? SqlServer的?你可以使用[ISNUMERIC()](http://msdn.microsoft.com/en-us/library/ms186272.aspx)? – Widor
我正在尝试不使用任何SQL函数。数据库是teradata,但SQL服务器中的查询也很好 – user708477
对不起,-1给我看不到标签。 – Widor