Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 在MS Access中识别文本字段中的数字_Sql_Ms Access 2007 - Fatal编程技术网

Sql 在MS Access中识别文本字段中的数字

Sql 在MS Access中识别文本字段中的数字,sql,ms-access-2007,Sql,Ms Access 2007,如何在文本字段中仅使用文本识别任何值 比如, Col1 THY1 D881 D282 RM01 D114 KAAR 5555 KAAR KAAR 预期结果 Results With Digits With Digits With Digits With Digits With Digits KAAR With Digits KAAR KAAR 我在下面试过,但没用 SELECT IIF(Tab1.Col1 LIKE "[!0-9]", Tab1.Col1, "With Digits")

如何在文本字段中仅使用文本识别任何值

比如,

Col1

THY1
D881
D282
RM01
D114
KAAR
5555
KAAR
KAAR
预期结果

Results
With Digits
With Digits
With Digits
With Digits
With Digits
KAAR
With Digits
KAAR
KAAR
我在下面试过,但没用

SELECT IIF(Tab1.Col1 LIKE "[!0-9]",  Tab1.Col1, "With Digits") AS Results
FROM  Tab1
请澄清

谢谢

你应该利用“where”子句的力量

更新:由于您希望保留顺序并用“with Digits”替换不正确的值,因此正确的子句应如下所示:

SELECT IIF(Tab1.Col1 LIKE "%[0-9]%",  "With Digits", Tab1.Col1) AS Results
FROM  Tab1;

注意“%”符号,它们使SQL将0-9与
Tab1.Col1的任何位置相匹配。您的逻辑是向后的。您正在测试是否存在任何非数字。相反,请查找是否存在任何数字:

SELECT IIF(Tab1.Col1 LIKE "[0-9]",  "With Digits", Tab1.Col1) AS Results
FROM  Tab1;

谢谢你的回复。在我的例子中,数字可以存在于值中的任何位置。所以需要确定这些值,并分别列出“值”下的含义?它只是
col1
的内容,还是整行的内容?如果是前者,则本子句过滤掉任何地方包含
[0-9]
符号的所有值。如果是整行,则可以为其他字段添加类似的构造,用“and”语句分隔。说
,其中col1不喜欢“%[0-9]”,col2不喜欢“%[0-9]”
。或者您需要全部选择,但将不正确的值(包含数字)替换为“带数字”吗?如果是这样,那么使用
IIF()
是正确的方法。不过,您已经在我的回答之后更新了问题。很抱歉造成混淆。我关注的是您最后提到的
IIF()
场景。但问题是它并没有给出预期的结果。它将所有结果显示为带数字的
。我只更新了问题中的结果集。太奇怪了,不应该。我在w3schools进行了测试,类似的查询在他们的表上提供了正确的结果。如果复制并粘贴此查询会怎么样:
选择IIF(Tab1.Col1,如“%[0-9]]”,“带数字”,Tab1.Col1)作为结果,Tab1.Col1作为Tab1的原件并将结果粘贴到此处?感谢您的回复。我已经把
[!0-9]
放进去了,而不是
[0-9]
@manthrepeiris。我不知道你的评论是什么意思。问题中的代码检测列中是否有单个非数字。这将确定是否有任何数字是数字。这似乎回答了你的问题。你好,戈登,这里的问题是问题中提到的预期结果不会从这些解决方案中给出。我不确定我这边有什么问题。
SELECT IIF(Tab1.Col1 LIKE "[0-9]",  "With Digits", Tab1.Col1) AS Results
FROM  Tab1;