我有一个SQLite 3列,其中可以包含由串联的一些不同的字符串+
。仅某些字符串有效,我想查找该列包含不属于有效字符串集的任何内容的行。
例如,这些是有效的字符串
1
2.4
5X
0A
因此,如果该列包含1+2.4+0A
它是有效的,但是如果它包含1+2.4+6X
它是无效的(因为6X
它不是有效集合的一部分)。同样,1 2.4
由于1
且2.4
必须以分隔,因此将是无效的+
。
我尝试过使用正则表达式进行实验,但似乎无法构造仅允许有效列表中的字符串的表达式。任何帮助将不胜感激,并且如前所述,我需要使用SQLite 3。
您可以使用(?:1|2\.4|5X|0A)
一组所有有效字符串。然后,您可以检查字符串是否以有效字符串开头,然后是任意数量的有效字符串,然后以开头,+
直到结尾^(?:1|2\.4|5X|0A)(?:\+(?:1|2\.4|5X|0A))*$
。
那会导致类似
SELECT *
FROM elbat
WHERE nmuloc REGEXP '^(?:1|2\.4|5X|0A)(?:\+(?:1|2\.4|5X|0A))*$';
获取具有有效字符串的记录。(否定获取无效的。)
如果您还希望允许空字符串有效,请从描述中不确定这些字符串是否正确,将其扩展为^(?:1|2\.4|5X|0A)(?:\+(?:1|2\.4|5X|0A))*$|^$
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句