<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
	<id>https://mochiu.net/index.php?action=history&amp;feed=atom&amp;title=MySQL_-_%E6%95%B0%E5%80%A4%E9%96%A2%E6%95%B0</id>
	<title>MySQL - 数値関数 - 版の履歴</title>
	<link rel="self" type="application/atom+xml" href="https://mochiu.net/index.php?action=history&amp;feed=atom&amp;title=MySQL_-_%E6%95%B0%E5%80%A4%E9%96%A2%E6%95%B0"/>
	<link rel="alternate" type="text/html" href="https://mochiu.net/index.php?title=MySQL_-_%E6%95%B0%E5%80%A4%E9%96%A2%E6%95%B0&amp;action=history"/>
	<updated>2026-04-17T13:08:35Z</updated>
	<subtitle>このウィキのこのページに関する変更履歴</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://mochiu.net/index.php?title=MySQL_-_%E6%95%B0%E5%80%A4%E9%96%A2%E6%95%B0&amp;diff=14311&amp;oldid=prev</id>
		<title>2026年2月16日 (月) 08:25にWikiによる</title>
		<link rel="alternate" type="text/html" href="https://mochiu.net/index.php?title=MySQL_-_%E6%95%B0%E5%80%A4%E9%96%A2%E6%95%B0&amp;diff=14311&amp;oldid=prev"/>
		<updated>2026-02-16T08:25:07Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;https://mochiu.net/index.php?title=MySQL_-_%E6%95%B0%E5%80%A4%E9%96%A2%E6%95%B0&amp;amp;diff=14311&amp;amp;oldid=14309&quot;&gt;差分を表示&lt;/a&gt;</summary>
		<author><name>Wiki</name></author>
	</entry>
	<entry>
		<id>https://mochiu.net/index.php?title=MySQL_-_%E6%95%B0%E5%80%A4%E9%96%A2%E6%95%B0&amp;diff=14309&amp;oldid=prev</id>
		<title>Wiki: ページの作成:「== 概要 == MySQLでは、データ型間の変換が頻繁に発生する。&lt;br&gt; 型変換には、暗黙的な変換と明示的な変換の2種類が存在する。&lt;br&gt; &lt;br&gt; 暗黙的な型変換は、演算や比較の際にMySQLが自動的に実行する変換である。&lt;br&gt; 明示的な型変換は、&lt;code&gt;CAST&lt;/code&gt; 関数や &lt;code&gt;CONVERT&lt;/code&gt; 関数を使用してユーザが指定する変換である。&lt;br&gt; &lt;br&gt; 暗黙的な型変換は、便利で…」</title>
		<link rel="alternate" type="text/html" href="https://mochiu.net/index.php?title=MySQL_-_%E6%95%B0%E5%80%A4%E9%96%A2%E6%95%B0&amp;diff=14309&amp;oldid=prev"/>
		<updated>2026-02-16T07:40:58Z</updated>

		<summary type="html">&lt;p&gt;ページの作成:「== 概要 == MySQLでは、データ型間の変換が頻繁に発生する。&amp;lt;br&amp;gt; 型変換には、暗黙的な変換と明示的な変換の2種類が存在する。&amp;lt;br&amp;gt; &amp;lt;br&amp;gt; 暗黙的な型変換は、演算や比較の際にMySQLが自動的に実行する変換である。&amp;lt;br&amp;gt; 明示的な型変換は、&amp;lt;code&amp;gt;CAST&amp;lt;/code&amp;gt; 関数や &amp;lt;code&amp;gt;CONVERT&amp;lt;/code&amp;gt; 関数を使用してユーザが指定する変換である。&amp;lt;br&amp;gt; &amp;lt;br&amp;gt; 暗黙的な型変換は、便利で…」&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新規ページ&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== 概要 ==&lt;br /&gt;
MySQLでは、データ型間の変換が頻繁に発生する。&amp;lt;br&amp;gt;&lt;br /&gt;
型変換には、暗黙的な変換と明示的な変換の2種類が存在する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
暗黙的な型変換は、演算や比較の際にMySQLが自動的に実行する変換である。&amp;lt;br&amp;gt;&lt;br /&gt;
明示的な型変換は、&amp;lt;code&amp;gt;CAST&amp;lt;/code&amp;gt; 関数や &amp;lt;code&amp;gt;CONVERT&amp;lt;/code&amp;gt; 関数を使用してユーザが指定する変換である。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
暗黙的な型変換は、便利である一方で、予期しない結果やパフォーマンスの低下を引き起こす場合がある。&amp;lt;br&amp;gt;&lt;br /&gt;
特に、WHERE句でカラムに対して型変換が適用されると、インデックスが使用されなくなる可能性が高い。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
MySQL 8.0.17以降では、&amp;lt;code&amp;gt;CAST&amp;lt;/code&amp;gt; 関数 および &amp;lt;code&amp;gt;CONVERT&amp;lt;/code&amp;gt; 関数で使用可能な型が拡張されている。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;FLOAT&amp;lt;/code&amp;gt; 型、&amp;lt;code&amp;gt;DOUBLE&amp;lt;/code&amp;gt; 型への変換がサポートされ、精度指定も可能になった。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
また、MySQL 8.0.22以降では、&amp;lt;code&amp;gt;YEAR&amp;lt;/code&amp;gt; 型への変換、および &amp;lt;code&amp;gt;AT TIME ZONE&amp;lt;/code&amp;gt; 演算子が追加された。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
型変換の動作を正確に理解することは、データの整合性を保ち、パフォーマンスを最適化する上で重要である。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 暗黙的な型変換 ==&lt;br /&gt;
暗黙的な型変換は、MySQLが自動的に実行する型変換である。&amp;lt;br&amp;gt;&lt;br /&gt;
演算子や関数が異なる型の引数を受け取った場合、MySQLは自動的に型を変換して処理を行う。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== 暗黙的変換が発生する場面 ====&lt;br /&gt;
暗黙的な型変換は、以下に示す場面で発生する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ 暗黙的な型変換が発生する場面&lt;br /&gt;
|-&lt;br /&gt;
! 場面 !! 説明&lt;br /&gt;
|-&lt;br /&gt;
| 比較演算子を使用する場合 || &amp;lt;code&amp;gt;=&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;!=&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;&amp;amp;lt;&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;&amp;amp;gt;&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;&amp;amp;lt;=&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;&amp;amp;gt;=&amp;lt;/code&amp;gt; 等&lt;br /&gt;
|-&lt;br /&gt;
| 算術演算子を使用する場合 || &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;-&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;*&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;%&amp;lt;/code&amp;gt; 等&lt;br /&gt;
|-&lt;br /&gt;
| 関数の引数として使用する場合 || &amp;lt;code&amp;gt;CONCAT&amp;lt;/code&amp;gt; 関数、&amp;lt;code&amp;gt;SUBSTRING&amp;lt;/code&amp;gt; 関数等&lt;br /&gt;
|-&lt;br /&gt;
| INSERT文またはUPDATE文での値代入 || カラムの型と異なる型の値を挿入または更新する場合&lt;br /&gt;
|-&lt;br /&gt;
| WHERE句での条件評価 || カラムと異なる型の値で比較する場合&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
暗黙的変換の例を以下に示す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;暗黙的変換は、コードの記述を簡潔にする一方で、予期しない動作を引き起こす可能性がある。&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;mysql&amp;quot;&amp;gt;&lt;br /&gt;
 SELECT &amp;#039;100&amp;#039; + 50;&lt;br /&gt;
 -- 結果: 150 (文字列 &amp;#039;100&amp;#039; が数値 100 に変換される)&lt;br /&gt;
 &lt;br /&gt;
 SELECT CONCAT(123, &amp;#039; items&amp;#039;);&lt;br /&gt;
 -- 結果: &amp;#039;123 items&amp;#039; (数値 123 が文字列 &amp;#039;123&amp;#039; に変換される)&lt;br /&gt;
 &lt;br /&gt;
 SELECT * FROM users WHERE user_id = &amp;#039;42&amp;#039;;&lt;br /&gt;
 -- user_idが整数型の場合、文字列 &amp;#039;42&amp;#039; が数値 42 に変換される&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== 文字列から数値への暗黙変換 ====&lt;br /&gt;
文字列が数値として解釈される場合、MySQLは文字列の先頭から数値として読み取れる部分までを変換する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
変換ルールを以下に示す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ 文字列から数値への変換規則&lt;br /&gt;
|-&lt;br /&gt;
! 条件 !! 説明&lt;br /&gt;
|-&lt;br /&gt;
| 先頭が数字の場合 || 数値として読み取れる部分まで変換&lt;br /&gt;
|-&lt;br /&gt;
| 先頭が数字でない場合 || 0に変換&lt;br /&gt;
|-&lt;br /&gt;
| 指数表記 (科学的表記法) をサポート || &amp;lt;code&amp;gt;1.5e2&amp;lt;/code&amp;gt; は 150 に変換&lt;br /&gt;
|-&lt;br /&gt;
| カンマ区切りは数値として認識されない || &amp;lt;code&amp;gt;1,234,567&amp;lt;/code&amp;gt; は 1 に変換 (カンマで終了)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
文字列から数値への変換例を以下に示す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;このルールにより、予期しない結果が生じる可能性がある。&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;例えば、&amp;lt;code&amp;gt;&amp;#039;1,234,567&amp;#039;&amp;lt;/code&amp;gt; という文字列は、1に変換される。&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;mysql&amp;quot;&amp;gt;&lt;br /&gt;
 SELECT &amp;#039;123&amp;#039; + 0;&lt;br /&gt;
 -- 結果: 123&lt;br /&gt;
 &lt;br /&gt;
 SELECT &amp;#039;123abc&amp;#039; + 0;&lt;br /&gt;
 -- 結果: 123 (先頭の数値部分のみ変換)&lt;br /&gt;
 &lt;br /&gt;
 SELECT &amp;#039;abc123&amp;#039; + 0;&lt;br /&gt;
 -- 結果: 0 (先頭が数字でないため0に変換)&lt;br /&gt;
 &lt;br /&gt;
 SELECT &amp;#039;1.5e2&amp;#039; + 0;&lt;br /&gt;
 -- 結果: 150 (指数表記を解釈)&lt;br /&gt;
 &lt;br /&gt;
 SELECT &amp;#039;1,234,567&amp;#039; + 0;&lt;br /&gt;
 -- 結果: 1 (カンマで数値部分が終了)&lt;br /&gt;
 &lt;br /&gt;
 SELECT &amp;#039;  456  &amp;#039; + 0;&lt;br /&gt;
 -- 結果: 456 (前後の空白は無視)&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== 数値から文字列への暗黙変換 ====&lt;br /&gt;
数値が文字列として解釈される場面では、MySQLは数値を文字列に自動変換する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
数値から文字列への変換は、比較的直感的である。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
文字列コンテキストの例を以下に示す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;mysql&amp;quot;&amp;gt;&lt;br /&gt;
 SELECT CONCAT(2, &amp;#039; items&amp;#039;);&lt;br /&gt;
 -- 結果: &amp;#039;2 items&amp;#039; (数値 2 が文字列 &amp;#039;2&amp;#039; に変換)&lt;br /&gt;
 &lt;br /&gt;
 SELECT CONCAT(123.45, &amp;#039; dollars&amp;#039;);&lt;br /&gt;
 -- 結果: &amp;#039;123.45 dollars&amp;#039;&lt;br /&gt;
 &lt;br /&gt;
 SELECT CONCAT(NULL, &amp;#039; test&amp;#039;);&lt;br /&gt;
 -- 結果: NULL&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== 日付型の暗黙変換 ====&lt;br /&gt;
MySQLは、日付型の文字列表現を&amp;quot;緩やかな&amp;quot;フォーマットで受け入れる。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
日付型の暗黙変換の特徴を以下に示す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ 文字列から日付/時刻への変換規則&lt;br /&gt;
|-&lt;br /&gt;
! 規則 !! 説明&lt;br /&gt;
|-&lt;br /&gt;
| 区切り文字の柔軟性 || &amp;lt;code&amp;gt;-&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; 等の区切り文字を使用可能&lt;br /&gt;
|-&lt;br /&gt;
| 区切り文字なしの形式 || &amp;lt;code&amp;gt;20240815&amp;lt;/code&amp;gt; のような形式も認識&lt;br /&gt;
|-&lt;br /&gt;
| 時刻部分のオプション || 日付のみ、または日付と時刻の両方を指定可能&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
日付型の暗黙変換の例を以下に示す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;ただし、日本語の日付表記 (例: &amp;lt;code&amp;gt;2024年8月15日&amp;lt;/code&amp;gt;) は認識されない。&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;このような形式の日付を変換する場合は、&amp;lt;code&amp;gt;STR_TO_DATE&amp;lt;/code&amp;gt; 関数を使用する。&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;mysql&amp;quot;&amp;gt;&lt;br /&gt;
 SELECT CAST(&amp;#039;2024-08-15&amp;#039; AS DATE);&lt;br /&gt;
 -- 結果: 2024-08-15&lt;br /&gt;
 &lt;br /&gt;
 SELECT CAST(&amp;#039;2024/08/15&amp;#039; AS DATE);&lt;br /&gt;
 -- 結果: 2024-08-15 (区切り文字 / を認識)&lt;br /&gt;
 &lt;br /&gt;
 SELECT CAST(&amp;#039;2024#08#15&amp;#039; AS DATE);&lt;br /&gt;
 -- 結果: 2024-08-15 (区切り文字 # を認識)&lt;br /&gt;
 &lt;br /&gt;
 SELECT CAST(&amp;#039;20240815&amp;#039; AS DATE);&lt;br /&gt;
 -- 結果: 2024-08-15 (区切り文字なしも認識)&lt;br /&gt;
 &lt;br /&gt;
 SELECT CAST(&amp;#039;2024-08-15 14:30:00&amp;#039; AS DATETIME);&lt;br /&gt;
 -- 結果: 2024-08-15 14:30:00&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 比較時の型変換ルール ==&lt;br /&gt;
MySQLは、異なる型の値を比較する際に、一定のルールに従って型変換を実行する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== 型変換の優先順位 ====&lt;br /&gt;
MySQLは、以下に示す優先順位で型変換を実行する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ 型変換の優先順位&lt;br /&gt;
|-&lt;br /&gt;
! 優先順位 !! 条件 !! 変換規則&lt;br /&gt;
|-&lt;br /&gt;
| 1 || NULLの場合 || 結果は &amp;lt;code&amp;gt;NULL&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;&amp;amp;lt;=&amp;amp;gt;&amp;lt;/code&amp;gt; 演算子は例外)&lt;br /&gt;
|-&lt;br /&gt;
| 2 || 両方が文字列の場合 || 文字列として比較&lt;br /&gt;
|-&lt;br /&gt;
| 3 || 両方が整数の場合 || 整数として比較&lt;br /&gt;
|-&lt;br /&gt;
| 4 || DECIMALが含まれる場合 || DECIMAL精度ルールに従って比較&lt;br /&gt;
|-&lt;br /&gt;
| 5 || その他の場合 || 浮動小数点数として比較&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
比較時の型変換の例を以下に示す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;mysql&amp;quot;&amp;gt;&lt;br /&gt;
 SELECT 1 = &amp;#039;1&amp;#039;;&lt;br /&gt;
 -- 結果: 1 (true) (文字列 &amp;#039;1&amp;#039; が数値 1 に変換)&lt;br /&gt;
 &lt;br /&gt;
 SELECT 0 = &amp;#039;abc&amp;#039;;&lt;br /&gt;
 -- 結果: 1 (true) (文字列 &amp;#039;abc&amp;#039; が数値 0 に変換)&lt;br /&gt;
 &lt;br /&gt;
 SELECT 1 = 1.0;&lt;br /&gt;
 -- 結果: 1 (true) (整数と浮動小数点の比較)&lt;br /&gt;
 &lt;br /&gt;
 SELECT &amp;#039;abc&amp;#039; = &amp;#039;ABC&amp;#039;;&lt;br /&gt;
 -- 結果: 1 (true) (デフォルトの照合順序は大文字小文字を区別しない)&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== 文字列と数値の比較 ====&lt;br /&gt;
文字列と数値を比較する場合、&amp;lt;u&amp;gt;文字列が数値に変換&amp;lt;/u&amp;gt; される。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
文字列と数値の比較例を以下に示す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
この動作により、予期しない比較結果が生じる可能性がある。&amp;lt;br&amp;gt;&lt;br /&gt;
特に、&amp;lt;u&amp;gt;&amp;#039;abc&amp;#039; = 0 が true&amp;lt;/u&amp;gt; となる点に注意すること。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;mysql&amp;quot;&amp;gt;&lt;br /&gt;
 SELECT 1 &amp;gt; &amp;#039;6x&amp;#039;;&lt;br /&gt;
 -- 結果: 0 (false) (&amp;#039;6x&amp;#039; は 6 に変換、1 &amp;gt; 6 は false)&lt;br /&gt;
 &lt;br /&gt;
 SELECT 7 &amp;gt; &amp;#039;6x&amp;#039;;&lt;br /&gt;
 -- 結果: 1 (true) (&amp;#039;6x&amp;#039; は 6 に変換、7 &amp;gt; 6 は true)&lt;br /&gt;
 &lt;br /&gt;
 SELECT 0 = &amp;#039;x6&amp;#039;;&lt;br /&gt;
 -- 結果: 1 (true) (&amp;#039;x6&amp;#039; は 0 に変換、0 = 0 は true)&lt;br /&gt;
 &lt;br /&gt;
 SELECT &amp;#039;abc&amp;#039; = 0;&lt;br /&gt;
 -- 結果: 1 (true) (&amp;#039;abc&amp;#039; は 0 に変換)&lt;br /&gt;
 &lt;br /&gt;
 SELECT &amp;#039;123&amp;#039; &amp;gt; 99;&lt;br /&gt;
 -- 結果: 1 (true) (&amp;#039;123&amp;#039; は 123 に変換、123 &amp;gt; 99 は true)&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== 照合順序と比較 ====&lt;br /&gt;
文字列同士の比較では、照合順序 (Collation) が比較結果に影響する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
大文字小文字を区別する比較を行う場合は、&amp;lt;code&amp;gt;BINARY&amp;lt;/code&amp;gt; 演算子 または &amp;lt;code&amp;gt;COLLATE utf8mb4_bin&amp;lt;/code&amp;gt; を使用する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
照合順序の影響を以下に示す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;mysql&amp;quot;&amp;gt;&lt;br /&gt;
 SELECT &amp;#039;abc&amp;#039; = &amp;#039;ABC&amp;#039;;&lt;br /&gt;
 -- 結果: 1 (true) (デフォルトの照合順序は大文字小文字を区別しない)&lt;br /&gt;
 &lt;br /&gt;
 SELECT &amp;#039;abc&amp;#039; = &amp;#039;ABC&amp;#039; COLLATE utf8mb4_bin;&lt;br /&gt;
 -- 結果: 0 (false) (バイナリ比較では区別)&lt;br /&gt;
 &lt;br /&gt;
 SELECT BINARY &amp;#039;abc&amp;#039; = &amp;#039;ABC&amp;#039;;&lt;br /&gt;
 -- 結果: 0 (false) (BINARY演算子でバイナリ比較を強制)&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 明示的な型変換 ==&lt;br /&gt;
明示的な型変換は、&amp;lt;code&amp;gt;CAST&amp;lt;/code&amp;gt; 関数 または &amp;lt;code&amp;gt;CONVERT&amp;lt;/code&amp;gt; 関数を使用して実行する。&amp;lt;br&amp;gt;&lt;br /&gt;
これらの関数により、ユーザが意図した型変換を明確に指定できる。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== CAST関数 ====&lt;br /&gt;
&amp;lt;code&amp;gt;CAST&amp;lt;/code&amp;gt; 関数は、SQL標準の型変換関数である。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
基本構文を以下に示す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;mysql&amp;quot;&amp;gt;&lt;br /&gt;
 CAST(expr AS type [ARRAY])&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &amp;lt;code&amp;gt;CAST&amp;lt;/code&amp;gt;関数の引数&lt;br /&gt;
! 引数 !! 説明&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;expr&amp;lt;/code&amp;gt; || 変換する値または式&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt; || 変換先の型&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;ARRAY&amp;lt;/code&amp;gt; || JSON配列への変換 (オプション、MySQL 8.0.17以降)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;CAST&amp;lt;/code&amp;gt; 関数の使用例を以下に示す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;mysql&amp;quot;&amp;gt;&lt;br /&gt;
 SELECT CAST(&amp;#039;123&amp;#039; AS SIGNED);&lt;br /&gt;
 -- 結果: 123 (文字列を符号付き整数に変換)&lt;br /&gt;
 &lt;br /&gt;
 SELECT CAST(123.456 AS DECIMAL(5,2));&lt;br /&gt;
 -- 結果: 123.46 (浮動小数点数を固定小数点数に変換、四捨五入)&lt;br /&gt;
 &lt;br /&gt;
 SELECT CAST(&amp;#039;2024-08-15&amp;#039; AS DATE);&lt;br /&gt;
 -- 結果: 2024-08-15 (文字列を日付型に変換)&lt;br /&gt;
 &lt;br /&gt;
 SELECT CAST(&amp;#039;2024-08-15 14:30:00&amp;#039; AS DATETIME);&lt;br /&gt;
 -- 結果: 2024-08-15 14:30:00 (文字列を日時型に変換)&lt;br /&gt;
 &lt;br /&gt;
 SELECT CAST(123 AS CHAR);&lt;br /&gt;
 -- 結果: &amp;#039;123&amp;#039; (数値を文字列に変換)&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== CONVERT関数 ====&lt;br /&gt;
&amp;lt;code&amp;gt;CONVERT&amp;lt;/code&amp;gt; 関数は、MySQL独自の型変換関数である。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;CONVERT&amp;lt;/code&amp;gt; 関数には、2つの構文が存在する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
基本構文を以下に示す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;mysql&amp;quot;&amp;gt;&lt;br /&gt;
 CONVERT(expr, type)&lt;br /&gt;
 CONVERT(expr USING transcoding_name)&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &amp;lt;code&amp;gt;CONVERT&amp;lt;/code&amp;gt;関数の構文&lt;br /&gt;
! 構文 !! 説明&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;CONVERT(expr, type)&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;CAST&amp;lt;/code&amp;gt;関数と同様の型変換&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;CONVERT(expr USING transcoding_name)&amp;lt;/code&amp;gt; || 文字セット変換&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;CONVERT&amp;lt;/code&amp;gt; 関数の使用例を以下に示す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;mysql&amp;quot;&amp;gt;&lt;br /&gt;
 SELECT CONVERT(&amp;#039;123&amp;#039;, SIGNED);&lt;br /&gt;
 -- 結果: 123&lt;br /&gt;
 &lt;br /&gt;
 SELECT CONVERT(123.456, DECIMAL(5,2));&lt;br /&gt;
 -- 結果: 123.46&lt;br /&gt;
 &lt;br /&gt;
 SELECT CONVERT(&amp;#039;Hello&amp;#039; USING utf8mb4);&lt;br /&gt;
 -- 結果: &amp;#039;Hello&amp;#039; (文字セットをutf8mb4に変換)&lt;br /&gt;
 &lt;br /&gt;
 SELECT CONVERT(&amp;#039;データ&amp;#039; USING latin1);&lt;br /&gt;
 -- エラーまたは文字化け (latin1は日本語をサポートしない)&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
文字セット指定付き &amp;lt;code&amp;gt;CAST&amp;lt;/code&amp;gt; 関数の構文を以下に示す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;mysql&amp;quot;&amp;gt;&lt;br /&gt;
 CAST(expr AS CHAR CHARACTER SET charset_name)&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
文字セット指定の例を以下に示す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;mysql&amp;quot;&amp;gt;&lt;br /&gt;
 SELECT CAST(&amp;#039;Hello&amp;#039; AS CHAR CHARACTER SET utf8mb4);&lt;br /&gt;
 -- 結果: &amp;#039;Hello&amp;#039;&lt;br /&gt;
 &lt;br /&gt;
 SELECT CAST(&amp;#039;データベース&amp;#039; AS CHAR CHARACTER SET utf8mb4);&lt;br /&gt;
 -- 結果: &amp;#039;データベース&amp;#039;&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== CAST / CONVERTで使用可能な型の詳細 ====&lt;br /&gt;
&amp;lt;code&amp;gt;CAST&amp;lt;/code&amp;gt; 関数 および &amp;lt;code&amp;gt;CONVERT&amp;lt;/code&amp;gt; 関数では、以下に示す型への変換がサポートされている。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ サポートされる型の一覧&lt;br /&gt;
! 型 !! 説明 !! 追加されたバージョン&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;BINARY[(N)]&amp;lt;/code&amp;gt; || バイナリ文字列型 ||&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;CHAR[(N)]&amp;lt;/code&amp;gt; || 固定長文字列型 ||&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;DATE&amp;lt;/code&amp;gt; || 日付型 ||&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;DATETIME&amp;lt;/code&amp;gt; || 日時型 ||&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;TIME&amp;lt;/code&amp;gt; || 時刻型 ||&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;DECIMAL[(M[,D])]&amp;lt;/code&amp;gt; || 固定小数点型 ||&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;SIGNED [INTEGER]&amp;lt;/code&amp;gt; || 符号付き整数型 ||&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;UNSIGNED [INTEGER]&amp;lt;/code&amp;gt; || 符号なし整数型 ||&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;FLOAT[(p)]&amp;lt;/code&amp;gt; || 単精度浮動小数点型 || MySQL 8.0.17以降&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;DOUBLE&amp;lt;/code&amp;gt; || 倍精度浮動小数点型 || MySQL 8.0.17以降&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;REAL&amp;lt;/code&amp;gt; || REAL型 (FLOATまたはDOUBLE) || MySQL 8.0.17以降&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;JSON&amp;lt;/code&amp;gt; || JSON型 ||&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;YEAR&amp;lt;/code&amp;gt; || 年型 || MySQL 8.0.22以降&lt;br /&gt;
|-&lt;br /&gt;
| 空間型 || Point、LineString等 || MySQL 8.0.24以降&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
===== BINARY / CHAR =====&lt;br /&gt;
&amp;lt;code&amp;gt;BINARY&amp;lt;/code&amp;gt; 型 および &amp;lt;code&amp;gt;CHAR&amp;lt;/code&amp;gt; 型への変換は、文字列またはバイナリ文字列を生成する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;BINARY[(N)]&amp;lt;/code&amp;gt; の場合、&amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; はバイト数を指定する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;CHAR[(N)]&amp;lt;/code&amp;gt; の場合、&amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; は文字数ではなくバイト数を指定する点に注意すること。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;mysql&amp;quot;&amp;gt;&lt;br /&gt;
 SELECT CAST(123 AS CHAR);&lt;br /&gt;
 -- 結果: &amp;#039;123&amp;#039;&lt;br /&gt;
 &lt;br /&gt;
 SELECT CAST(&amp;#039;Hello&amp;#039; AS BINARY(10));&lt;br /&gt;
 -- 結果: &amp;#039;Hello\0\0\0\0\0&amp;#039; (10バイトに拡張、NULLバイトでパディング)&lt;br /&gt;
 &lt;br /&gt;
 SELECT CAST(&amp;#039;Hello World&amp;#039; AS CHAR(5));&lt;br /&gt;
 -- 結果: &amp;#039;Hello&amp;#039; (5バイトに切り詰め)&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
===== 数値型 =====&lt;br /&gt;
数値型への変換には、整数型、固定小数点型、浮動小数点型が含まれる。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ 数値型への変換&lt;br /&gt;
! 型 !! 説明&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;SIGNED [INTEGER]&amp;lt;/code&amp;gt; || 符号付き整数型 (-9223372036854775808 ～ 9223372036854775807)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;UNSIGNED [INTEGER]&amp;lt;/code&amp;gt; || 符号なし整数型 (0 ～ 18446744073709551615)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;DECIMAL[(M[,D])]&amp;lt;/code&amp;gt; || 固定小数点型 (M: 精度、D: 小数点以下桁数)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;FLOAT[(p)]&amp;lt;/code&amp;gt; || 単精度浮動小数点型 (p: 精度 0-53)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;DOUBLE&amp;lt;/code&amp;gt; || 倍精度浮動小数点型&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;REAL&amp;lt;/code&amp;gt; || REAL型 (REAL_AS_FLOATモード設定時はFLOAT、それ以外はDOUBLE)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;FLOAT[(p)]&amp;lt;/code&amp;gt; の精度指定について以下に示す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &amp;lt;code&amp;gt;FLOAT[(p)]&amp;lt;/code&amp;gt; の精度指定&lt;br /&gt;
|-&lt;br /&gt;
! 精度 &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt; の範囲 !! 変換先&lt;br /&gt;
|-&lt;br /&gt;
| 0〜24 || &amp;lt;code&amp;gt;FLOAT&amp;lt;/code&amp;gt; 型 (単精度浮動小数点)&lt;br /&gt;
|-&lt;br /&gt;
| 25〜53 || &amp;lt;code&amp;gt;DOUBLE&amp;lt;/code&amp;gt; 型 (倍精度浮動小数点)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
数値型への変換の例を以下に示す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;mysql&amp;quot;&amp;gt;&lt;br /&gt;
 SELECT CAST(&amp;#039;123&amp;#039; AS SIGNED);&lt;br /&gt;
 -- 結果: 123&lt;br /&gt;
 &lt;br /&gt;
 SELECT CAST(&amp;#039;-456&amp;#039; AS SIGNED);&lt;br /&gt;
 -- 結果: -456&lt;br /&gt;
 &lt;br /&gt;
 SELECT CAST(&amp;#039;789&amp;#039; AS UNSIGNED);&lt;br /&gt;
 -- 結果: 789&lt;br /&gt;
 &lt;br /&gt;
 SELECT CAST(&amp;#039;-123&amp;#039; AS UNSIGNED);&lt;br /&gt;
 -- 結果: 18446744073709551493 (オーバーフロー)&lt;br /&gt;
 &lt;br /&gt;
 SELECT CAST(123.456 AS DECIMAL(5,2));&lt;br /&gt;
 -- 結果: 123.46 (四捨五入)&lt;br /&gt;
 &lt;br /&gt;
 SELECT CAST(&amp;#039;123.456&amp;#039; AS FLOAT);&lt;br /&gt;
 -- 結果: 123.456&lt;br /&gt;
 &lt;br /&gt;
 SELECT CAST(&amp;#039;123.456&amp;#039; AS DOUBLE);&lt;br /&gt;
 -- 結果: 123.456&lt;br /&gt;
 &lt;br /&gt;
 SELECT CAST(&amp;#039;1.23e2&amp;#039; AS DOUBLE);&lt;br /&gt;
 -- 結果: 123 (指数表記を解釈)&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
===== 日付・時刻型 =====&lt;br /&gt;
日付型および時刻型への変換には、以下に示す型が含まれる。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ 日付・時刻型への変換&lt;br /&gt;
! 型 !! 形式 !! 説明&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;DATE&amp;lt;/code&amp;gt; || YYYY-MM-DD || 日付型&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;TIME&amp;lt;/code&amp;gt; || HH:MM:SS || 時刻型&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;DATETIME&amp;lt;/code&amp;gt; || YYYY-MM-DD HH:MM:SS || 日時型&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;YEAR&amp;lt;/code&amp;gt; || YYYY || 年型 (MySQL 8.0.22以降)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
日付・時刻型への変換の例を以下に示す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;mysql&amp;quot;&amp;gt;&lt;br /&gt;
 SELECT CAST(&amp;#039;2024-08-15&amp;#039; AS DATE);&lt;br /&gt;
 -- 結果: 2024-08-15&lt;br /&gt;
 &lt;br /&gt;
 SELECT CAST(&amp;#039;14:30:00&amp;#039; AS TIME);&lt;br /&gt;
 -- 結果: 14:30:00&lt;br /&gt;
 &lt;br /&gt;
 SELECT CAST(&amp;#039;2024-08-15 14:30:00&amp;#039; AS DATETIME);&lt;br /&gt;
 -- 結果: 2024-08-15 14:30:00&lt;br /&gt;
 &lt;br /&gt;
 SELECT CAST(&amp;#039;2024&amp;#039; AS YEAR);&lt;br /&gt;
 -- 結果: 2024 (MySQL 8.0.22以降)&lt;br /&gt;
 &lt;br /&gt;
 SELECT CAST(&amp;#039;2024-08-15 14:30:00&amp;#039; AS DATE);&lt;br /&gt;
 -- 結果: 2024-08-15 (時刻部分は切り捨て)&lt;br /&gt;
 &lt;br /&gt;
 SELECT CAST(&amp;#039;2024-08-15 14:30:00&amp;#039; AS TIME);&lt;br /&gt;
 -- 結果: 14:30:00 (日付部分は切り捨て)&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;AT TIME ZONE&amp;lt;/code&amp;gt; 演算子による時刻変換 (MySQL 8.0.22以降) を以下に示す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;mysql&amp;quot;&amp;gt;&lt;br /&gt;
 SELECT CAST(&amp;#039;2024-08-15 14:30:00&amp;#039; AS DATETIME) AT TIME ZONE &amp;#039;+00:00&amp;#039;;&lt;br /&gt;
 -- 結果: UTCタイムゾーンに変換&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
===== JSON =====&lt;br /&gt;
&amp;lt;code&amp;gt;JSON&amp;lt;/code&amp;gt; 型への変換は、文字列、数値、オブジェクト、配列をJSON形式に変換する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;mysql&amp;quot;&amp;gt;&lt;br /&gt;
 SELECT CAST(&amp;#039;{}&amp;#039; AS JSON);&lt;br /&gt;
 -- 結果: {} (空のJSONオブジェクト)&lt;br /&gt;
 &lt;br /&gt;
 SELECT CAST(&amp;#039;[1,2,3]&amp;#039; AS JSON);&lt;br /&gt;
 -- 結果: [1,2,3] (JSON配列)&lt;br /&gt;
 &lt;br /&gt;
 SELECT CAST(123 AS JSON);&lt;br /&gt;
 -- 結果: 123 (JSON数値)&lt;br /&gt;
 &lt;br /&gt;
 SELECT CAST(&amp;#039;&amp;quot;Hello&amp;quot;&amp;#039; AS JSON);&lt;br /&gt;
 -- 結果: &amp;quot;Hello&amp;quot; (JSON文字列)&lt;br /&gt;
 &lt;br /&gt;
 SELECT CAST(&amp;#039;{&amp;quot;name&amp;quot;:&amp;quot;Alice&amp;quot;,&amp;quot;age&amp;quot;:30}&amp;#039; AS JSON);&lt;br /&gt;
 -- 結果: {&amp;quot;name&amp;quot;:&amp;quot;Alice&amp;quot;,&amp;quot;age&amp;quot;:30} (JSONオブジェクト)&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== JSON関連の型変換 ==&lt;br /&gt;
MySQL 8.0では、JSON型と他の型の間での変換が強化されている。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== JSON型への変換 ====&lt;br /&gt;
JSON型への変換は、&amp;lt;code&amp;gt;CAST&amp;lt;/code&amp;gt; 関数を使用して実行する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;mysql&amp;quot;&amp;gt;&lt;br /&gt;
 SELECT CAST(&amp;#039;{&amp;quot;name&amp;quot;:&amp;quot;Alice&amp;quot;}&amp;#039; AS JSON);&lt;br /&gt;
 -- 結果: {&amp;quot;name&amp;quot;:&amp;quot;Alice&amp;quot;}&lt;br /&gt;
 &lt;br /&gt;
 SELECT CAST(&amp;#039;[1,2,3,4,5]&amp;#039; AS JSON);&lt;br /&gt;
 -- 結果: [1,2,3,4,5]&lt;br /&gt;
 &lt;br /&gt;
 SELECT CAST(123 AS JSON);&lt;br /&gt;
 -- 結果: 123&lt;br /&gt;
 &lt;br /&gt;
 SELECT CAST(true AS JSON);&lt;br /&gt;
 -- 結果: true&lt;br /&gt;
 &lt;br /&gt;
 SELECT CAST(NULL AS JSON);&lt;br /&gt;
 -- 結果: null (JSONのnull値)&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== JSON型からの変換 ====&lt;br /&gt;
JSON型から他の型への変換には、&amp;lt;code&amp;gt;JSON_UNQUOTE&amp;lt;/code&amp;gt; 関数 と &amp;lt;code&amp;gt;JSON_EXTRACT&amp;lt;/code&amp;gt; 関数を組み合わせる方法がある。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;mysql&amp;quot;&amp;gt;&lt;br /&gt;
 SET @json = &amp;#039;{&amp;quot;name&amp;quot;:&amp;quot;Alice&amp;quot;,&amp;quot;age&amp;quot;:30}&amp;#039;;&lt;br /&gt;
 &lt;br /&gt;
 SELECT JSON_EXTRACT(@json, &amp;#039;$.name&amp;#039;);&lt;br /&gt;
 -- 結果: &amp;quot;Alice&amp;quot; (JSON文字列、ダブルクォート付き)&lt;br /&gt;
 &lt;br /&gt;
 SELECT JSON_UNQUOTE(JSON_EXTRACT(@json, &amp;#039;$.name&amp;#039;));&lt;br /&gt;
 -- 結果: Alice (ダブルクォートを除去)&lt;br /&gt;
 &lt;br /&gt;
 SELECT CAST(JSON_EXTRACT(@json, &amp;#039;$.age&amp;#039;) AS SIGNED);&lt;br /&gt;
 -- 結果: 30 (数値に変換)&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
MySQL 8.0.21以降では、&amp;lt;code&amp;gt;JSON_VALUE&amp;lt;/code&amp;gt; 関数が利用可能である。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;JSON_VALUE&amp;lt;/code&amp;gt; 関数の構文を以下に示す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;mysql&amp;quot;&amp;gt;&lt;br /&gt;
 JSON_VALUE(json_doc, path [RETURNING type] [on_empty] [on_error])&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &amp;lt;code&amp;gt;JSON_VALUE&amp;lt;/code&amp;gt;関数の引数&lt;br /&gt;
! 引数 !! 説明&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;json_doc&amp;lt;/code&amp;gt; || JSON文書&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;path&amp;lt;/code&amp;gt; || JSONパス式&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;RETURNING type&amp;lt;/code&amp;gt; || 戻り型 (オプション、デフォルト: VARCHAR(512))&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;on_empty&amp;lt;/code&amp;gt; || 値が存在しない場合の動作&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;on_error&amp;lt;/code&amp;gt; || エラー発生時の動作&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;JSON_VALUE&amp;lt;/code&amp;gt; 関数で使用可能な型を以下に示す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ JSON_VALUE関数で使用可能な型&lt;br /&gt;
|-&lt;br /&gt;
! 分類 !! 型&lt;br /&gt;
|-&lt;br /&gt;
| 数値型 || &amp;lt;code&amp;gt;FLOAT&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;DOUBLE&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;DECIMAL&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;SIGNED&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;UNSIGNED&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 日付・時刻型 || &amp;lt;code&amp;gt;DATE&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;TIME&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;DATETIME&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;YEAR&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 文字列型 || &amp;lt;code&amp;gt;CHAR&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| その他 || &amp;lt;code&amp;gt;JSON&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;JSON_VALUE&amp;lt;/code&amp;gt; 関数の使用例を以下に示す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;mysql&amp;quot;&amp;gt;&lt;br /&gt;
 SET @json = &amp;#039;{&amp;quot;name&amp;quot;:&amp;quot;Alice&amp;quot;,&amp;quot;age&amp;quot;:30,&amp;quot;salary&amp;quot;:50000.50}&amp;#039;;&lt;br /&gt;
 &lt;br /&gt;
 SELECT JSON_VALUE(@json, &amp;#039;$.name&amp;#039;);&lt;br /&gt;
 -- 結果: &amp;#039;Alice&amp;#039; (デフォルトはVARCHAR(512))&lt;br /&gt;
 &lt;br /&gt;
 SELECT JSON_VALUE(@json, &amp;#039;$.age&amp;#039; RETURNING SIGNED);&lt;br /&gt;
 -- 結果: 30 (符号付き整数に変換)&lt;br /&gt;
 &lt;br /&gt;
 SELECT JSON_VALUE(@json, &amp;#039;$.salary&amp;#039; RETURNING DECIMAL(10,2));&lt;br /&gt;
 -- 結果: 50000.50 (固定小数点数に変換)&lt;br /&gt;
 &lt;br /&gt;
 SELECT JSON_VALUE(@json, &amp;#039;$.unknown&amp;#039; RETURNING SIGNED NULL ON EMPTY);&lt;br /&gt;
 -- 結果: NULL (値が存在しない場合はNULLを返す)&lt;br /&gt;
 &lt;br /&gt;
 SELECT JSON_VALUE(@json, &amp;#039;$.unknown&amp;#039; RETURNING SIGNED DEFAULT 0 ON EMPTY);&lt;br /&gt;
 -- 結果: 0 (値が存在しない場合は0を返す)&lt;br /&gt;
 &lt;br /&gt;
 SELECT JSON_VALUE(@json, &amp;#039;$.invalid&amp;#039; RETURNING SIGNED ERROR ON ERROR);&lt;br /&gt;
 -- エラー発生 (変換エラー時にエラーを返す)&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;ON EMPTY&amp;lt;/code&amp;gt; 句および &amp;lt;code&amp;gt;ON ERROR&amp;lt;/code&amp;gt; 句の動作を以下に示す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ ON EMPTY / ON ERROR句の動作&lt;br /&gt;
! 句 !! 説明&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;NULL ON EMPTY&amp;lt;/code&amp;gt; || 値が存在しない場合、NULLを返す (デフォルト)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;DEFAULT value ON EMPTY&amp;lt;/code&amp;gt; || 値が存在しない場合、指定したデフォルト値を返す&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;ERROR ON EMPTY&amp;lt;/code&amp;gt; || 値が存在しない場合、エラーを発生&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;NULL ON ERROR&amp;lt;/code&amp;gt; || 変換エラー時、NULLを返す (デフォルト)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;DEFAULT value ON ERROR&amp;lt;/code&amp;gt; || 変換エラー時、指定したデフォルト値を返す&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;ERROR ON ERROR&amp;lt;/code&amp;gt; || 変換エラー時、エラーを発生&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;※注意&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;code&amp;gt;ON EMPTY&amp;lt;/code&amp;gt; 句は、&amp;lt;code&amp;gt;ON ERROR&amp;lt;/code&amp;gt; 句より前に置く必要がある。&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== JSONと他の型の比較 ====&lt;br /&gt;
JSON型と他の型を比較する場合、MySQLは自動的に型変換を実行する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;mysql&amp;quot;&amp;gt;&lt;br /&gt;
 SET @json = &amp;#039;{&amp;quot;value&amp;quot;:123}&amp;#039;;&lt;br /&gt;
 &lt;br /&gt;
 SELECT JSON_EXTRACT(@json, &amp;#039;$.value&amp;#039;) = 123;&lt;br /&gt;
 -- 結果: 1 (true) (JSON数値と整数を比較)&lt;br /&gt;
 &lt;br /&gt;
 SELECT JSON_EXTRACT(@json, &amp;#039;$.value&amp;#039;) = &amp;#039;123&amp;#039;;&lt;br /&gt;
 -- 結果: 1 (true) (JSON数値と文字列を比較)&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 型変換に関する注意点 ==&lt;br /&gt;
==== データ損失のリスク ====&lt;br /&gt;
型変換により、データが損失または変更される場合がある。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
データ損失が発生する例を以下に示す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* 固定小数点数から整数への変換&lt;br /&gt;
*: 小数部が切り捨てられる&lt;br /&gt;
*: &amp;lt;syntaxhighlight lang=&amp;quot;mysql&amp;quot;&amp;gt;&lt;br /&gt;
 SELECT CAST(123.456 AS SIGNED);&lt;br /&gt;
 -- 結果: 123 (小数部 .456 が切り捨て)&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*: &amp;lt;br&amp;gt;&lt;br /&gt;
* 浮動小数点数から固定小数点数への変換&lt;br /&gt;
*: 丸め誤差が発生する可能性&lt;br /&gt;
*: &amp;lt;syntaxhighlight lang=&amp;quot;mysql&amp;quot;&amp;gt;&lt;br /&gt;
 SELECT CAST(123.456789 AS DECIMAL(5,2));&lt;br /&gt;
 -- 結果: 123.46 (四捨五入)&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*: &amp;lt;br&amp;gt;&lt;br /&gt;
* 文字列から整数への変換&lt;br /&gt;
*: 数値以外の文字が喪失&lt;br /&gt;
*: &amp;lt;syntaxhighlight lang=&amp;quot;mysql&amp;quot;&amp;gt;&lt;br /&gt;
 SELECT CAST(&amp;#039;123abc&amp;#039; AS SIGNED);&lt;br /&gt;
 -- 結果: 123 (&amp;#039;abc&amp;#039; が喪失)&lt;br /&gt;
 &lt;br /&gt;
 SELECT CAST(&amp;#039;abc123&amp;#039; AS SIGNED);&lt;br /&gt;
 -- 結果: 0 (全ての文字が喪失)&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*: &amp;lt;br&amp;gt;&lt;br /&gt;
* 日時型から日付型への変換&lt;br /&gt;
*: 時刻部分が切り捨てられる&lt;br /&gt;
*: &amp;lt;syntaxhighlight lang=&amp;quot;mysql&amp;quot;&amp;gt;&lt;br /&gt;
 SELECT CAST(&amp;#039;2024-08-15 14:30:00&amp;#039; AS DATE);&lt;br /&gt;
 -- 結果: 2024-08-15 (時刻部分 14:30:00 が切り捨て)&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== インデックスへの影響 ====&lt;br /&gt;
WHERE句でカラムに対して型変換を適用すると、インデックスが使用されなくなる。&amp;lt;br&amp;gt;&lt;br /&gt;
これにより、クエリのパフォーマンスが大幅に低下する可能性がある。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* 良い例&lt;br /&gt;
*: &amp;lt;syntaxhighlight lang=&amp;quot;mysql&amp;quot;&amp;gt;&lt;br /&gt;
 -- 値側で型変換を行う&lt;br /&gt;
 SELECT * FROM users WHERE user_id = 123;&lt;br /&gt;
 -- インデックスが使用される&lt;br /&gt;
 &lt;br /&gt;
 -- または、CASTを使わずに比較&lt;br /&gt;
 SELECT * FROM users WHERE user_id = CAST(&amp;#039;123&amp;#039; AS SIGNED);&lt;br /&gt;
 -- インデックスが使用される&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*: &amp;lt;br&amp;gt;&lt;br /&gt;
* 悪い例&lt;br /&gt;
*: &amp;lt;syntaxhighlight lang=&amp;quot;mysql&amp;quot;&amp;gt;&lt;br /&gt;
 -- user_idが整数型の場合&lt;br /&gt;
 SELECT * FROM users WHERE CAST(user_id AS CHAR) = &amp;#039;123&amp;#039;;&lt;br /&gt;
 -- インデックスが使用されない&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;カラムに対して関数または型変換を適用しないことが、インデックスを有効活用するための基本原則である。&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== NULLの扱い ====&lt;br /&gt;
&amp;lt;code&amp;gt;CAST&amp;lt;/code&amp;gt; 関数 および &amp;lt;code&amp;gt;CONVERT&amp;lt;/code&amp;gt; 関数は、&amp;lt;code&amp;gt;NULL&amp;lt;/code&amp;gt; を変換すると &amp;lt;code&amp;gt;NULL&amp;lt;/code&amp;gt; を返す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;mysql&amp;quot;&amp;gt;&lt;br /&gt;
 SELECT CAST(NULL AS SIGNED);&lt;br /&gt;
 -- 結果: NULL&lt;br /&gt;
 &lt;br /&gt;
 SELECT CAST(NULL AS CHAR);&lt;br /&gt;
 -- 結果: NULL&lt;br /&gt;
 &lt;br /&gt;
 SELECT CAST(NULL AS DATE);&lt;br /&gt;
 -- 結果: NULL&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;NULL&amp;lt;/code&amp;gt; を別の値に置き換える場合は、&amp;lt;code&amp;gt;COALESCE&amp;lt;/code&amp;gt; 関数 または &amp;lt;code&amp;gt;IFNULL&amp;lt;/code&amp;gt; 関数を使用する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;mysql&amp;quot;&amp;gt;&lt;br /&gt;
 SELECT COALESCE(CAST(NULL AS SIGNED), 0);&lt;br /&gt;
 -- 結果: 0&lt;br /&gt;
 &lt;br /&gt;
 SELECT IFNULL(CAST(NULL AS SIGNED), -1);&lt;br /&gt;
 -- 結果: -1&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== 文字列と数値の比較でインデックスが使用されない ====&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;mysql&amp;quot;&amp;gt;&lt;br /&gt;
 -- user_idが整数型インデックスの場合&lt;br /&gt;
 SELECT * FROM users WHERE user_id = &amp;#039;42&amp;#039;;&lt;br /&gt;
 -- 文字列 &amp;#039;42&amp;#039; が数値 42 に変換されるが、インデックスは使用される&lt;br /&gt;
 &lt;br /&gt;
 -- しかし、以下はインデックスが使用されない&lt;br /&gt;
 SELECT * FROM users WHERE CAST(user_id AS CHAR) = &amp;#039;42&amp;#039;;&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== カンマ区切り数値の変換 ====&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;mysql&amp;quot;&amp;gt;&lt;br /&gt;
 SELECT &amp;#039;1,234,567&amp;#039; + 0;&lt;br /&gt;
 -- 結果: 1 (カンマで数値部分が終了)&lt;br /&gt;
 &lt;br /&gt;
 -- 正しく変換するには、カンマを除去する&lt;br /&gt;
 SELECT CAST(REPLACE(&amp;#039;1,234,567&amp;#039;, &amp;#039;,&amp;#039;, &amp;#039;&amp;#039;) AS SIGNED);&lt;br /&gt;
 -- 結果: 1234567&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== 浮動小数点数の比較 ====&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;mysql&amp;quot;&amp;gt;&lt;br /&gt;
 SELECT 0.1 + 0.2 = 0.3;&lt;br /&gt;
 -- 結果: 0 (false) (浮動小数点誤差により不一致)&lt;br /&gt;
 &lt;br /&gt;
 SELECT ABS((0.1 + 0.2) - 0.3) &amp;lt; 0.0001;&lt;br /&gt;
 -- 結果: 1 (true) (誤差を考慮した比較)&lt;br /&gt;
 &lt;br /&gt;
 -- または、DECIMAL型を使用&lt;br /&gt;
 SELECT CAST(0.1 AS DECIMAL(10,2)) + CAST(0.2 AS DECIMAL(10,2)) = CAST(0.3 AS DECIMAL(10,2));&lt;br /&gt;
 -- 結果: 1 (true)&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== 日本語日付のCAST不可 ====&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;mysql&amp;quot;&amp;gt;&lt;br /&gt;
 SELECT CAST(&amp;#039;2024年8月15日&amp;#039; AS DATE);&lt;br /&gt;
 -- 結果: NULL (日本語日付は認識されない)&lt;br /&gt;
 &lt;br /&gt;
 -- STR_TO_DATE関数を使用&lt;br /&gt;
 SELECT STR_TO_DATE(&amp;#039;2024年8月15日&amp;#039;, &amp;#039;%Y年%m月%d日&amp;#039;);&lt;br /&gt;
 -- 結果: 2024-08-15&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== 大きな整数と浮動小数点の比較 ====&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;mysql&amp;quot;&amp;gt;&lt;br /&gt;
 SELECT 9223372036854775807 = 9223372036854775808.0;&lt;br /&gt;
 -- 結果: 1 (true) (浮動小数点の精度制限により誤った結果)&lt;br /&gt;
 &lt;br /&gt;
 -- 整数同士で比較する&lt;br /&gt;
 SELECT 9223372036854775807 = CAST(9223372036854775808.0 AS SIGNED);&lt;br /&gt;
 -- 結果: 0 (false) (ただし、オーバーフローに注意)&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title={{PAGENAME}} : Exploring Electronics and SUSE Linux | MochiuWiki&lt;br /&gt;
|keywords=MochiuWiki,Mochiu,Wiki,Mochiu Wiki,MySQL,Database,SQL,Type Conversion,Cast,Convert,Implicit Conversion,Explicit Conversion,型変換,キャスト,データベース,電気回路,電子回路,基板,プリント基板&lt;br /&gt;
|description={{PAGENAME}} - MySQLの型変換・キャストに関する包括的なリファレンス | This page is {{PAGENAME}} in our wiki about electronic circuits and SUSE Linux&lt;br /&gt;
|image=/resources/assets/MochiuLogo_Single_Blue.png&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
__FORCETOC__&lt;br /&gt;
[[カテゴリ:MySQL]]&lt;/div&gt;</summary>
		<author><name>Wiki</name></author>
	</entry>
</feed>