ホームページ  >  記事  >  データベース  >  MySQL の高度なクエリ機能とは何ですか?

MySQL の高度なクエリ機能とは何ですか?

coldplay.xixi
coldplay.xixiオリジナル
2020-10-13 15:34:582952ブラウズ

MySQL の高度なクエリ関数: 1. 文字列関数、2. 数値関数、[CEIL(x)] は X 以上の最小の整数値を返します、3. 日付関数、[DATE_ADD/DATE_SUB] など。

MySQL の高度なクエリ機能とは何ですか?

#MySQL の高度なクエリ関数:

関数の分類:

1、単一行関数: 各レコードの入力値を計算し、対応する計算結果を取得してユーザーに返します。つまり、各レコードは入力パラメータとして使用され、各レコードの計算結果は次のようになります。関数計算で求められます。

2、複数行関数: 複数レコードの入力値を計算し、複数レコードに対応する単一の結果を取得します。

単一行関数:

①:文字列関数 (ユーザーは大文字と小文字の変換、文字列のインターセプト、アセンブリなどの単一行の文字データを処理します) .)

#a.LOWER/UPPER(LOWER(str): 文字列 str を小文字にした文字列 str を返します。 UPPER(str): 文字列 str を返します。文字列 str は大文字になります。 )

SELECT UPPER(name) FROM student; //全部大写
SELECT LOWER(name) FROM student; //全部小写
b.CONCAT: CONCAT(str1,str2,...):

1 の場合、戻り結果は次のようになります。接続パラメータによって生成された文字列。

2. いずれかのパラメータが NULL の場合、戻り値は NULL

3. 1 つ以上のパラメータが許可されます

SELECT name,age, CONCAT(name,'-',age) FROM student;

c.INSERT: 指定されたパラメータを置き換えます(位置、長さ) ターゲット文字列の部分文字列

形式: INSERT(str,pos,len,newstr)

パラメータ: str: (ソース文字列) pos: (挿入の開始位置、インデックスは 1 から始まります) len: (置換文字列の長さ) newstr: (挿入される文字列)

1、文字列 str とその部分文字列を返します。位置 pos から始まり、長さは文字列 newstr の len 文字で置き換えられます。

2. pos が文字列長を超えた場合、戻り値は元の文字列になります。

3. len の長さが他の文字列の長さより大きい場合は、pos の位置から置換が開始されます。

4. いずれかのパラメータが null の場合、戻り値は NULL になります。

例:

ユーザー名の一部の文字を置き換えます。ルールは次のとおりです。最初の文字を保持します。ユーザー名は 2 桁で、中央の 3 桁の代わりに * を使用します。名前に余分な文字がある場合は、

SELECT  INSERT(name,2,3,'***')  FROM student;

d のままにしてください。 ①LENGTH: 文字列 ## が占めるバイト数

#
SELECT LENGTH(name) FROM student;

②CHAR_LENGTH: 文字数を計算します

SELECT CHAR_LENGTH(name) FROM student;

e: LPAD/RPAD: 文字列の文字数が指定された文字数より大きい場合数値が小さい場合は関数で指定した端から埋められます 数値を指定しますが、それ以上の場合は文字列の末尾から

# を切り捨てます LPAD(str,len ,padstr): 左パディング 1、文字列 str を返します。その左側は次のように表されます。文字列 Padstr は、全長 len までパディングされます。

2. str の長さが len より大きい場合、戻り値は len 文字に短縮されます。

SELECT LPAD(NAME,10,'*')  FROM student;

結果表示:

RPAD(str,len,padstr): 右パディング

1、右側が len 文字にパディングされた文字列 str を返します。文字列padstrの長さによって決まります。

2. 文字列 str の長さが len より大きい場合、戻り値は len 文字と同じ長さに短縮されます。

SELECT RPAD(NAME,10,'*')  FROM student;

f:TRIM/LTRIM/RTRIM

LTRIM (str): 左側のスペースがトリミングされます;

RTRIM (str): 右側のスペースがトリミングされます;

TRIM(str)=LTRIM RTRIM

TRIM([{BOTH | LEADING | TRAILING} [remstr] FROM] str)

高度な使用法、指定された方法で str からインターセプトしますremstr;

TRIM(remstr FROM] str): TRIM(BOTH remstr FROM str);

SELECT TRIM(name), CHAR_LENGTH(TRIM(name)), CHAR_LENGTH(name) FROM student;
#去掉字符串中两端的指定子字符串
SELECT TRIM('ja' FROM name) FROM student;
                            ||(等价于)
SELECT TRIM(BOTH 'ja' FROM name) FROM student;        
# 去掉头
SELECT TRIM(LEADING 'ja' FROM name) FROM student;
# 去掉尾
SELECT TRIM(TRAILING 'ja' FROM name) FROM student;

g:REPLACE

REPLACE(と同等) str, from_str, to_str): 1. str 内のすべての from_str を to_str に置き換えます;

2. 大文字と小文字を区別します;

# 选择性的替换
# 当某一条的记录中的字段值和第二个参数的值相等的时候
#把这个字段值替换成字三个参数
SELECT REPLACE(name,'rose','niceMan') FROM student;

h:SUBSTRING (str, pos):

文字列 str の位置 pos から部分文字列を返します SUBSTRING(str,pos,len):

文字列 str の位置 pos

から始まる len 文字と同じ長さ pos が文字列の末尾から数えて負の数の場合;

# 从指定的位置开始,截取到最后
SELECT SUBSTR(name,2) FROM student;
# 从指定的位置截取指定的长度的子字符串
SELECT SUBSTR(name,2,3) FROM student;

②: 数値関数

#a.ABS/MOD ABS(x): 数値の絶対値を返します;

MOD(N,M): N を M で割った余り (モジュロ) を返します;

SELECT ABS(-13);   //取绝对值
SELECT MOD(10,3);//取模

b.CELT/FLOOR/ROUND/TRUNCATE

CEIL(x): X 以上の最小の整数値を返します;

SELECT CEIL(3.5);      结果4

FLOOR (x): ,D):

1 以下の最大の整数値を返します。値が最も近い整数に近いパラメータ X を返します。

  2,在有两个参数的情况下,返回X ,其值保留到小数点后D位,而第D位的保留方式为四舍五入。

  3,若要接保留X值小数点左边的D 位,可将 D 设为负值。

 

SELECT ROUND(3.2228,2);    返回3.22

  TRUNCATE(X,D)

  1,返回被舍去至小数点后D位的数字X。

  2,若D 的值为 0, 则结果不带有小数点或不带有小数部分。可以将D设为负数,若要截去(归零) X小数点左起第D位开始后面所有

SELECT TRUNCATE(3.456,1)    返回3.4

③:日期函数

a:DATE_ADD/DATE_SUB

  TYPE:SECOND ,MINUTE ,HOUR ,DAY ,WEEK ,MONTH ,YEAR

  1,执行日期运算;

  2,date 是一个 DATETIME 或DATE值,用来指定起始时间;

  3,expr 是一个字符串表达式,用来指定从起始日期添加或减去的时间间隔值;

  4,type 为关键词,它指示了表达式被解释的方式

  DATE_ADD(date,INTERVAL expr type)

  DATE_SUB(date,INTERVAL expr type)

SELECT DATE_ADD(CURDATE(),INTERVAL 1 DAY)

SELECT DATE_SUB(CURDATE(),INTERVAL 1 DAY)

b:DATEDIFF(expr,expr2):返回起始时间expr和结束时间expr2之间的天数

#计算两个日期的差值, 计算结果的单位是·天·

SELECT DATEDIFF('2017-03-21','2017-03-10')

c:DateTime_module (YEAR,DAY,LAST_DAY,MONTH,HOUR,MINUTE)

# 获取某个日期的模块的值, 年,月日时分秒
SELECT DAY(now())
SELECT DAYOFMONTH(now())
SELECT DAYOFWEEK(now())
SELECT DAYOFYEAR(now())
SELECT now()
SELECT HOUR(now())
SELECT MINUTE(now())

e:UNIX_TIMESTAMP/FROM_UNIXTIME

  UNIX_TIMESTAMP(date):将返回从'1970-01-01 00:00:00' GMT 指定日期的后的秒数
  FROM_UNIXTIME(unix_timestamp) FROM_UNIXTIME(unix_timestamp,format)
SELECT UNIX_TIMESTAMP(NOW())
SELECT FROM_UNIXTIME(UNIX_TIMESTAMP(NOW()))
SELECT FROM_UNIXTIME(UNIX_TIMESTAMP(NOW()), '%y/%m/%d%H:%i:%S')

④:其他函数

a.UUID

SELECT UUID();

b:COALESCE

  COALESCE(value,...):返回值为列表当中的第一个非 NULL值,在没有非NULL 值得情况下返回值为 NULL
SELECT COALESCE('Jerry', 'Jack', 'Lucy');  结果为Jerry
SELECT COALESCE(NULL, 'Jack', 'Lucy');   结果为Jack

e:IF/IFNULL语句

 

# 数据库中的if函数, 相当于Java中的三目运算符
SELECT IF(1>1,'true','false')
# IFNULL(expr1,expr2):
#假如expr1 不为 NULL,则 IFNULL() 的返回值为expr1; 否则其返回值为expr2。    
SELECT IFNULL(NULL,10);
SELECT IFNULL(NULL,'unempty')

更多相关免费学习推荐:mysql教程(视频)

以上がMySQL の高度なクエリ機能とは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。