SQL语句的不常用方法记录

CONCAT():将多个列的值合成一个列,中间可以加其他字符串。
例子:SELECT CONCAT(TRIM(m.id), "aaa ", TRIM(m.allprice)) AS concat_col
FROM account m ;


AVG():AVG方法是常用的,但是注意AVG() 会忽略 NULL 行,而且AVG()可以和DISTINCT 一起使用,效果是汇总函数值汇总不同的值。
例子:SELECT AVG(DISTINCT aa.proprice) AS avg_col FROM account_detail aa;
例如account_detail 表的proprice列共有10行数据,其中九个的值是50,和一个40,那么AVG(DISTINCT aa.proprice)计算的结果是50 和 40 的平均值 45 ,而不是所有行的平均值(9*50+40)/10 = 49。


SOUNDEX():SOUNDEX是一个将任何文本串转换为描述其语音表示的字母数字模式的算法。soundex考虑了类似的发音字符和音节,使得对字符串进行发音比较而不是字母比较。
这个方法感觉非常玄幻,从定义上看,查询时是做的字符串的发音比较,尝试了几个发音相近的英文单词,结果如下:brake能找到break,two可以找到too,但是beach找不到bitch,虽然这两个单词只有长短音的区别。还有bow找不到bough。还试了试汉字,比如人名“张三”,使用“张撒”和“张桑”,都可以查到张三的结果,但是“章三”却是查不到的。
个人理解,感觉这个方法其实是做的是多个模糊查询,而且不同点越往后越容易匹配到。

例子:SELECT * FROM member WHERE SOUNDEX(membername) = SOUNDEX(‘张撒’),id本来是int类型的,用‘34’ 去查询ID仍然可以查询到结果。


还有一堆关于日期的函数,没啥说的,截个图记录下就好。
SQL语句的不常用方法记录