mirror of
https://github.com/fofolee/uTools-Manuals.git
synced 2025-06-07 22:14:04 +08:00
15 lines
2.5 KiB
HTML
15 lines
2.5 KiB
HTML
<div class="m-bg">
|
||
<h1>SQL NULL 函数</h1>
|
||
<h2>SQL ISNULL()、NVL()、IFNULL() 和 COALESCE() 函数</h2> <p>请看下面的 "Products" 表:</p> <table class="reference notranslate">
|
||
<tr>
|
||
<th align="left">P_Id</th> <th align="left">ProductName</th> <th align="left">UnitPrice</th> <th align="left">UnitsInStock</th> <th align="left">UnitsOnOrder</th> </tr>
|
||
<tr>
|
||
<td>1</td> <td>Jarlsberg</td> <td>10.45</td> <td>16</td> <td>15</td> </tr>
|
||
<tr>
|
||
<td>2</td> <td>Mascarpone</td> <td>32.56</td> <td>23</td> <td> </td> </tr>
|
||
<tr>
|
||
<td>3</td> <td>Gorgonzola</td> <td>15.67</td> <td>9</td> <td>20</td> </tr>
|
||
</table>
|
||
<p>假如 "UnitsOnOrder" 是可选的,而且可以包含 NULL 值。</p> <p>我们使用下面的 SELECT 语句:</p> <div class="code notranslate"><pre><code class="language-sql"><div> SELECT ProductName,UnitPrice*(UnitsInStock+UnitsOnOrder)<br/> FROM Products</div></code></pre></div> <p>在上面的实例中,如果有 "UnitsOnOrder" 值是 NULL,那么结果是 NULL。</p> <p>微软的 ISNULL() 函数用于规定如何处理 NULL 值。</p> <p>NVL()、IFNULL() 和 COALESCE() 函数也可以达到相同的结果。</p> <p>在这里,我们希望 NULL 值为 0。</p> <p>下面,如果 "UnitsOnOrder" 是 NULL,则不会影响计算,因为如果值是 NULL 则 ISNULL() 返回 0:</p> <p><b>SQL Server / MS Access</b></p> <div class="code notranslate"><pre><code class="language-sql"><div> SELECT ProductName,UnitPrice*(UnitsInStock+ISNULL(UnitsOnOrder,0))<br/> FROM Products</div></code></pre></div> <p><b>Oracle</b></p> <p>Oracle 没有 ISNULL() 函数。不过,我们可以使用 NVL() 函数达到相同的结果:</p> <div class="code notranslate"><pre><code class="language-sql"><div> SELECT ProductName,UnitPrice*(UnitsInStock+NVL(UnitsOnOrder,0))<br/> FROM Products</div></code></pre></div> <p><b>MySQL</b></p> <p>MySQL 也拥有类似 ISNULL() 的函数。不过它的工作方式与微软的 ISNULL() 函数有点不同。</p> <p>在 MySQL 中,我们可以使用 IFNULL() 函数,如下所示:</p> <div class="code notranslate"><pre><code class="language-sql"><div> SELECT ProductName,UnitPrice*(UnitsInStock+IFNULL(UnitsOnOrder,0))<br/> FROM Products</div></code></pre></div> <p>或者我们可以使用 COALESCE() 函数,如下所示:</p> <div class="code notranslate"><pre><code class="language-sql"><div> SELECT ProductName,UnitPrice*(UnitsInStock+COALESCE(UnitsOnOrder,0))<br/> FROM Products</div></code></pre></div> <br/><div class="text-center padding-10 margin-t-5">
|
||
</div>
|
||
</div> |