表列中的SQL字符数

时间:2017-06-14 18:29:31

标签: sql

例如,我有一个名为X的表,并且其中的列是Y。

Y有500000个值,如

190|12131|23|123|0|0|0|0|112
220|234|23|111|0|1|0|1|769

在每个值中有8 |

但在某些值中存在错误,而不是8 |

11|0000020|12|14 -----3 |
234|23|000|1|2 ------4 |

如何列出小于8 |

的值

我需要使用功能吗?如果是这样,我如何以及如何调用该函数。我从未在SQL中使用过函数。

2 个答案:

答案 0 :(得分:3)

您可以将字符串的长度与没有|的字符串进行比较,而不是计算|的出现次数:

select * 
  from X
  where length(Y) <> (length(replace(Y, '|', '')) + 8)

不确定这是否比约翰的答案更快。

答案 1 :(得分:2)

假设max 8 |

不优雅,也不敏感

Select * 
 from  X 
 Where Y not like '%|%|%|%|%|%|%|%|%'