mysql句点(。)搜索模式

时间:2012-08-14 07:56:51

标签: mysql regex

我需要一个场景,需要根据其中的句点数来整理结果。

字段值为:

aa.bb.ee.tt
aa.tt.ee
aa.tt

如果我只想搜索包含单个句点的值,那么查询是什么?

4 个答案:

答案 0 :(得分:1)

如果列名是 str ,并且您在以下SQL中放置 substr =“。”,您将获得所需内容。按列str

中的句点数排序
SELECT (LENGTH(str) - LENGTH(REPLACE(str, substr, ''))) / LENGTH(substr) AS cnt
...
ORDER BY cnt DESC

答案 1 :(得分:1)

由于没有内置的MySQL函数来计算字符串中字符的出现,我们可以通过以下步骤来实现:

  1. 计算原始字符串中的字符数
  2. 暂时“删除”您要计算的字符并重新计算字符串
  3. 从第二个计数中减去第一个计数以获取出现次数
  4. 实施例

    SELECT CHAR_LENGTH('hello') - CHAR_LENGTH(REPLACE('hello', 'l', '')) AS `COUNT`
    

    返回2

    如果您想订购结果,

    SELECT CHAR_LENGTH(colName) - CHAR_LENGTH(REPLACE(colName, xChar, '')) AS `COUNT`
    FROM tableName
    ORDER BY `COUNT` DESC
    

    WHERE

    colName是包含字符串的列的名称 xChar是您要查找的角色

    BTW,请使用CHAR_LENGTH()代替LENGTH(),因为LENGTH()会返回字符串以字节为单位的长度。 CHAR_LENGTH()返回字符串的长度以字符为单位

答案 2 :(得分:0)

private void CheckPeriod(string stringLine)  
{  
int counter = 0;

foreach (char c in stringLine)  
{  
if(c == ".")  
{  
counter = counter + 1;  
}    
}  

if(counter == 1)  
{  
//Do code  
}  
}

希望这会有所帮助,或指向正确的方向

答案 3 :(得分:0)

嗯,你可以像

 SELECT * FROM TABLE_NAME WHERE COL_NAME REGEXP "[A-Za-z0-9]*\.[A-Za-z0-9]*"

获取单个期间值并为多个期间结果添加更多期间相同的方式