SELECT SUBSTR(gram_panchayat,1,6) GP FROM tw_master WHERE gram_panchayat LIKE 'B%';
SELECT gram_panchayat FROM tw_master WHERE gram_panchayat LIKE 'B_____';
Run Code Online (Sandbox Code Playgroud)
这两个选择语句有什么区别。
SELECT SUBSTR(gram_panchayat,1,6) GP FROM tw_master WHERE gram_panchayat LIKE 'B%';
Run Code Online (Sandbox Code Playgroud)
将获取(最多)以“B”开头的任何值的前六个字符,无论它有多长 - 就像%任意数量字符的通配符一样。您最终可能会得到包含 1、2、3、4、5 或 6 个字符的结果。较长的值将被调用截断substr()。
SELECT gram_panchayat FROM tw_master WHERE gram_panchayat LIKE 'B_____';
Run Code Online (Sandbox Code Playgroud)
只会检索正好六个字符长的值 - 就像_单个字符的通配符一样。因此,应用substr()它不会对结果产生任何影响,因为它无论如何都不能超过六个字符。
如果列中的值长于或短于六个字符,则第二个查询将返回更少的行,因为它是限制性更强的匹配。如果所有值正好是六个字符,那么结果将是相同的 - 但substr()第一个查询中的 也将是不必要的。
您可以看到具有不同长度的一些虚构示例数据的查询之间的差异:
| GRAM_PANCHAYAT |
|---|
| ABCDEF |
| 乙 |
| 学士 |
| 巴布 |
| 巴布克 |
| BABCD |
| BABCDE |
| 贝德克商学院 |
| BABCDEF |
| BABCDEFG |
| BABCDEFGH |
| BABCDEFGHI |
第一个查询返回以“B”开头的所有行,其中一些被截断:
| 全科医生 |
|---|
| 乙 |
| 学士 |
| 巴布 |
| 巴布克 |
| BABCD |
| BABCDE |
| 贝德克商学院 |
| BABCDE |
| BABCDE |
| BABCDE |
| BABCDE |
第二个查询仅返回以“B”开头且长度恰好为六个字符的查询:
| GRAM_PANCHAYAT |
|---|
| BABCDE |
| 贝德克商学院 |