我需要一个场景,需要根据其中的句点数来整理结果。
字段值为:
aa.bb.ee.tt
aa.tt.ee
aa.tt
如果我只想搜索包含单个句点的值,那么查询是什么?
答案 0 :(得分:1)
如果列名是 str ,并且您在以下SQL中放置 substr =“。”,您将获得所需内容。按列str
中的句点数排序SELECT (LENGTH(str) - LENGTH(REPLACE(str, substr, ''))) / LENGTH(substr) AS cnt
...
ORDER BY cnt DESC
答案 1 :(得分:1)
由于没有内置的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
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]*"
获取单个期间值并为多个期间结果添加更多期间相同的方式