金沙棋牌app手机下载

当前位置:金沙棋牌 > 金沙棋牌app手机下载 > 去掉某字段括号中的值,MySQL必知必会

去掉某字段括号中的值,MySQL必知必会

来源:http://www.logblo.com 作者:金沙棋牌 时间:2019-11-05 12:36

 今天在数据库匹配数据的时候,发现一些数据存在别名,导致我的数据匹配不上。在这里记录分享一下

第十章:创建计算字段

  • 拼接字段
    • 拼接函数 Concat()
      • SELECT Concat(name, '(', department, ')') FROM student ORDER BY name;
    • 去掉空格函数 Trim() LTrim() RTrim()
    • 别名 alias
      • SELECT Concat(name, '(', department, ')') AS name_department FROM student ORDER BY name;
  • 执行算术计算
    • 支持加减乘除
      • SELECT name, 2018-birth AS age FROM student ORDER BY age;

MySQL学习足迹记录08--创建计算字段--Concat(),AS

例如: 李钟硕 (Lee Jong Suk),这里我匹配的是 “李钟硕”

第十一章:数据处理函数

大部分SQL提供下面的函数

  • 文本处理函数
    • Left() 返回串左边的字符
    • Length() 返回串的长度
    • Locate() 找出串的一个子串
    • Lower() 转换成小写
    • LTrim() 去掉串左边的空格
    • Right() 返回串右边的字符
    • RTrim() 去掉串右边的字符
    • Soundex() 返回串的Soundex值(根据发音来匹配,中文效果不怎么样)
    • SubString() 返回子串的字符
    • Upper() 转换成大写
  • 日期和时间处理函数
    • AddDate() 增加一个日期
    • AddTime() 增加一个时间
    • CurDate() 返回当前日期
    • CurTime() 返回当前时间
    • Date() 返回日期时间中的日期部分
    • DateDiff() 计算两个日期之差
    • 金沙棋牌app手机下载,Date_Add() 高度灵活的日期运算函数
    • Date_Format() 返回一个格式化的日期或者时间串
    • Day() 返回一个日期的天数部分
    • DayOfWeek() 返回一个日期对应一周内的第几天(星期天是第1天)
    • Hour() 返回一个时间的小时部分
    • Minute() 返回一个时间的分钟部分
    • Month() 返回一个日期的月份部分
    • Now() 返回当前日期和时间
    • Second() 返回一个时间的秒部分
    • Time() 返回一个日期时间的时间部分
    • Year() 返回一个日期的年份部分
  • 数值处理函数
    • Abs() 返回一个数的绝对值
    • Cos() 返回一个角度的余弦
    • Exp() 返回一个数的指数值
    • Mod() 返回除操作的余数
    • Pi() 返回圆周率
    • Rand() 返回一个随机数
    • Sin() 返回一个角度的正弦
    • Sqrt() 返回一个数的平方根
    • Tan() 返回一个角度的正切

 

示例1:

第十二章:汇总函数

  • 聚集函数(不需要实际数据本身,只是汇总信息)

    • 获取行数
    • 求和
    • 最大值、最小值和平均值
    • AVG() 返回某列的平均值
    • COUNT() 返回某列的行数
      • SELECT COUNT(*) FROM student; //不忽略null
      • SELECT COUNT(name) FROM student; //指定列明的话,忽略null
    • MAX() 返回某列的最大值
    • MIN() 返回某列的最小值
    • SUM() 返回某列之和
  • 聚集不同值

    • DISTINCE 排除值相同的行,可以用于上面的5个聚集函数,不过 COUNT(DISTINCE price) 必须指定列名,MAX() 和 MIN() 使用 DISTINCE 没有意义。
  • 组合聚集函数

    • SELECT COUNT(*) AS user_count, MIN(birth) AS birth_old, MAX(birth) AS birth_young, AVG(birth) AS birth_avg FROM student;

    本文所用到的表格数据

SELECT reverse(substring(reverse(Name) ,charindex('(',reverse(Name)) + 1 , len(Name)))  FROM T

第十三章:分组数据

数据分组: 把数据分为多个逻辑组,以便对每个组进行聚集计算

  • 分组 GROUP BY

    • SELECT birth, COUNT(*) AS num FROM student GROUP BY birth; //检索每个出生年份有几人
    • GROUP BY 可以包含多列
    • GROUP BY 可以嵌套分组
    • GROUP BY 必须出现在 WHERE 子句之后, ORDER BY 子句之前
  • 过滤分组 HAVING(HAVING 可以代替 WHERE 子句, WHERE 是对数据分组前进行过滤,HAVING 是对数据进行分组后过滤)

    • SELECT birth FROM student GROUP BY birth HAVING birth > 1990; //查询1990之后哪个年份有人出生
  • 对分组进行排序 GROUP BY + ORDER BY

    • SELECT birth, COUNT(*) AS num FROM student GROUP BY birth ORDER BY birth; //按出生年份分组并升序排序
  • SELECT 子句

    • SELECT 要返回的列或者表达式
    • FROM 从中检索数据的表
    • WHERE 过滤行
    • GROUP BY 分组
    • HAVING 过滤分组
    • ORDER BY 排序
    • LIMIT 要检索的行数
 mysql> SELECT * FROM vendors;
+---------+----------------+-----------------+-------------+------------+----------+--------------------------------------------+
| vend_id | vend_name      | vend_address    | vend_city   | vend_state | vend_zip | vend_country |
+---------+----------------+-----------------+-------------+------------+----------+---------------------------------------------+
|    1001 | Anvils R Us    | 123 Main Street | Southfield  | MI         | 48075    | USA          |
|    1002 | LT Supplies    | 500 Park Street | Anytown     | OH         | 44333    | USA          |
|    1003 | ACME           | 555 High Street | Los Angeles | CA         | 90046    | USA          |
|    1004 | Furball Inc.   | 1000 5th Avenue | New York    | NY         | 11111    | USA          |
|    1005 | Jet Set        | 42 Galaxy Road  | London      | NULL       | N16 6PS  | England      |
|    1006 | Jouets Et Ours | 1 Rue Amusement | Paris       | NULL       | 45678    | France       |
+---------+----------------+-----------------+-------------+------------+----------+-----------------------------------------------+
6 rows in set (0.00 sec)

示例2:

第十四章:使用子查询

  • SQL中所有语句都是查询,一般指的是 SELECT 语句

  • SELECT 语句可以嵌套使用,子查询就是查询嵌套查询

  • 子查询不能嵌套太多,会影响性能

  • 子查询一般跟 IN 操作符配合使用,有时也会跟等于(=)、不等于(<>)配合使用

  • 看一个例子(从3张表中检索数据):

    • SELECT cust_name, cust_contact FROM customers WHERE cust_id IN
      (SELECT cust_id FROM orders WHERE order_num IN
      (SELECT order_num FROM orderitems WHERE prod_id = 'TNT2'));
  • 作为计算列字段使用子查询:

    • 例子:从order表和customer表中查询出每个顾客的订单数):
    • SELECT cust_name,
      cust_state,
      (SELECT COUNT(*) FROM order WHERE order.cust_id=customer.cust_id)
      AS orders FROM customer ORDER BY cust_name;
    • 先从customer表中找出所有顾客,然后用顾客id跟order表中的顾客id匹配,查询出每个顾客的订单数,作为计算字段orders输出。

 

SELECT reverse(stuff(reverse(Name), 1, charindex('(', reverse(Name)), '')) FROM T

 

注意,如果去掉括号后,数据含有空格,别忘记去掉。

1.计算字段并不实际存在于数据库表中,计算字段是在运行时在SELECT语句内创建的。

前后的空格,使用LTrim和RTrim即可,例如:LTrim(RTrim(字段))

 

中间的空格,使用replace函数替换,例如:Replace(字段,' ','')

 

2.拼接字段Concat()

  *拼接:将值连结到一起构成单个值

   拼接两个列

  eg: 
  mysql> SELECT Concat(vend_name,'(',vend_country,')') FROM vendors
            -> ORDER BY vend_name;
+-------------------------------------------------------+
| Concat(vend_name,'(',vend_country,')') |
+--------------------------------------------------------+
| ACME(USA)                                                |
| Anvils R Us(USA)                                       |
| Furball Inc.(USA)                                        |
| Jet Set(England)                                         |
| Jouets Et Ours(France)                              |
| LT Supplies(USA)                                       |
+---------------------------------------------------------+
6 rows in set (0.00 sec)

 

 

3.删除右侧多余的空格RTrim()

  删除左侧多余的空格LTrim()

  删除两侧多余的空格Trim()

  以RTrim()为例:

  eg:
    mysql> SELECT Concat(RTrim(vend_name),'(',RTrim(vend_country),')')
             -> FROM vendors
             -> ORDER BY vend_name;
+------------------------------------------------------+
| Concat(RTrim(vend_name),'(',RTrim(vend_country),')') |
+------------------------------------------------------+
| ACME(USA)                                            |
| Anvils R Us(USA)                                     |
| Furball Inc.(USA)                                    |
| Jet Set(England)                                     |
| Jouets Et Ours(France)                               |
| LT Supplies(USA)                                     |
+------------------------------------------------------+
6 rows in set (0.00 sec)

 

 

4.使用别名(alias),关键字AS

  eg:
  mysql> SELECT Concat(Trim(vend_name),'(',Trim(vend_country),')')
           -> AS vend_title
           -> FROM vendors
           -> ORDER BY vend_name;
+------------------------+
| vend_title             |
+------------------------+
| ACME(USA)              |
| Anvils R Us(USA)       |
| Furball Inc.(USA)      |
| Jet Set(England)       |
| Jouets Et Ours(France) |
| LT Supplies(USA)       |
+------------------------+
6 rows in set (0.00 sec)

 

 

5.执行算术计算

  先检索订单号20005中的所有物品

   eg:
  mysql> SELECT prod_id,quantity,item_price
           -> FROM orderitems
           -> WHERE order_num = 20005;
+---------+----------+------------+
| prod_id | quantity | item_price |
+---------+----------+------------+
| ANV01   |       10 |       5.99 |
| ANV02   |        3 |       9.99 |
| TNT2    |        5 |      10.00 |
| FB      |        1 |      10.00 |
+---------+----------+------------+
4 rows in set (0.00 sec)

 

 

 再汇总物品的价格(单价*数量)

  eg:
 mysql> SELECT prod_id,quantity,item_price,
          -> quantity*item_price AS expanded_price
          -> FROM orderitems
          -> WHERE order_num = 20005;
+---------+----------+------------+----------------+
| prod_id | quantity | item_price | expanded_price |
+---------+----------+------------+----------------+
| ANV01   |       10 |       5.99 |          59.90 |
| ANV02   |        3 |       9.99 |          29.97 |
| TNT2    |        5 |      10.00 |          50.00 |
| FB      |        1 |      10.00 |          10.00 |
+---------+----------+------------+----------------+
4 rows in set (0.00 sec)

 

 

6.MySQL支持的基本算术操作符+,-,*,/

本文所用到的表格数据 mysql SELECT * FROM vendors;+---------+----------------+-----------------+-------------+--...

本文由金沙棋牌发布于金沙棋牌app手机下载,转载请注明出处:去掉某字段括号中的值,MySQL必知必会

关键词:

上一篇:没有了

下一篇:没有了