0

我需要一个场景,需要根据其中的周期数对结果进行排序。

字段值为:

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

如果我只想搜索包含在单个周期内的值,查询将是什么?

4

4 回答 4

1

如果列名是str,并且您输入 substr = "." 在下面的 SQL 中,你会得到你想要的。按 str 列中的句点数排序

SELECT (LENGTH(str) - LENGTH(REPLACE(str, substr, ''))) / LENGTH(substr) AS cnt
...
ORDER BY cnt DESC
于 2012-08-14T08:09:39.737 回答
1

由于没有内置的 MySQL 函数来计算字符串中字符的出现次数,我们可以使用以下步骤来完成:

  1. 计算原始字符串中的字符数
  2. 暂时‘删除’你要统计的字符,再统计字符串
  3. 从第二个中减去第一个计数以获得出现次数

前任。

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

在哪里

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

顺便说一句,使用CHAR_LENGTH()而不是LENGTH()因为返回以字节为单位测量LENGTH()的字符串的长度。返回以字符为单位测量的字符串长度。CHAR_LENGTH()

于 2012-08-14T08:50:00.370 回答
0
private void CheckPeriod(string stringLine)  
{  
int counter = 0;

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

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

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

于 2012-08-14T08:04:45.213 回答
0

嗯,你可以像

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

用于获取单个周期值并以相同方式为多个周期结果添加更多周期

于 2012-08-14T08:07:23.780 回答