我需要一个场景,需要根据其中的周期数对结果进行排序。
字段值为:
aa.bb.ee.tt
aa.tt.ee
aa.tt
如果我只想搜索包含在单个周期内的值,查询将是什么?
如果列名是str,并且您输入 substr = "." 在下面的 SQL 中,你会得到你想要的。按 str 列中的句点数排序
SELECT (LENGTH(str) - LENGTH(REPLACE(str, substr, ''))) / LENGTH(substr) AS cnt
...
ORDER BY cnt DESC
由于没有内置的 MySQL 函数来计算字符串中字符的出现次数,我们可以使用以下步骤来完成:
前任。
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()
private void CheckPeriod(string stringLine)
{
int counter = 0;
foreach (char c in stringLine)
{
if(c == ".")
{
counter = counter + 1;
}
}
if(counter == 1)
{
//Do code
}
}
希望这会有所帮助,或指向正确的方向
嗯,你可以像
SELECT * FROM TABLE_NAME WHERE COL_NAME REGEXP "[A-Za-z0-9]*\.[A-Za-z0-9]*"
用于获取单个周期值并以相同方式为多个周期结果添加更多周期