语法: SELECT * from table_name ORDER BY FIELD(str
,str1,str2,str3,…)
str: 字段名,
str1,str2,str3: 自定义排序的数值
例1排序-所有值:
先姓名排序后出生日期排序
SELECT * from name_info ORDER BY FIELD(name,"张三","小明","小刘"),date_birth
例2排序-部分值:
张三,小明排序后,其余姓名按照出生日期排序
SELECT * from name_info ORDER BY FIELD(name,"张三","小明"),date_birth
功能:判断字符串中是否包含字符串
语法:SELECT * from table_name WHERE LOCATE(substr, str, startPos)
LOCATE(substr, str, startPos)
substr:必需的。 在 str 中搜索的子串。
str:必需的。 被搜索的字符串。
startPos:可选的。 在 str 中开始搜索的位置,从 1 开始。
返回值:LOCATE() 函数返回子字符串 substr 在字符串 str 中的位置的数字索引。数字索引从 1 开始。如果在 str 中找不到 substr,LOCATE() 函数将返回 0。
例:
locate函数返回的是substr在str的位置
SELECT * from name_info ORDER BY LOCATE(name,"张三,小明,小刘")
语法:
CASE value
WHEN compare_value THEN result
[WHEN compare_value THEN result ...]
[ELSE result]
END
value:可选
CASE 语句返回 condition 为真或者 value = compare_value 为真的 THEN 子句中指定的值。
例:
SELECT name from name_info
order by
case name
when "张三" then 1
when "小明" then 2
when "小刘" then 3
else 0
end
使用case when 将字段中的张三,小明,小刘转换为1,2,3,这样在我们再使用order by实现数据的自定义重排