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_____';
这两个select语句之间有什么区别。
83qze16e1#
SELECT SUBSTR(gram_panchayat,1,6) GP FROM tw_master WHERE gram_panchayat LIKE 'B%';
将获取以"B"开头的任何值的前六个字符,无论其长度如何-因为%是任意字符数的通配符。您可能最终得到1、2、3、4、5或6个字符的结果。较长的值将被substr()调用截断。
%
substr()
SELECT gram_panchayat FROM tw_master WHERE gram_panchayat LIKE 'B_____';
将只检索长度正好为6个字符的值-因为_是单个字符的通配符。因此,对它应用substr()不会对结果产生任何影响,因为它的长度不能超过6个字符。如果列的值长于或短于6个字符,则第二个查询将返回较少的行,因为这是一个限制性更强的匹配。如果所有的值都正好是6个字符,则结果将是相同的-但第一个查询中的substr()也将是不必要的。您可以看到使用一些不同长度的虚构样本数据的查询之间的差异:| 格兰姆--潘查亚特|| - ------|| ABC定义|| 乙|| 学士|| 巴伯|| 生物活性炭|| 巴ABCD|| BABCDE|| 贝达CBA|| 巴氏凝析油|| 巴伯克德夫格|| 巴伯德夫|| 巴卜克代夫吉|第一个查询返回所有以'B'开头的行,其中一些被截断:| 普通合伙人|| - ------|| 乙|| 学士|| 巴伯|| 生物活性炭|| 巴ABCD|| BABCDE|| 贝达CBA|| BABCDE|| BABCDE|| BABCDE|| BABCDE|第二个查询只返回以'B'开头且长度正好为六个字符的查询:| 格兰姆--潘查亚特|| - ------|| BABCDE|| 贝达CBA|fiddle
_
1条答案
按热度按时间83qze16e1#
将获取以"B"开头的任何值的前六个字符,无论其长度如何-因为
%
是任意字符数的通配符。您可能最终得到1、2、3、4、5或6个字符的结果。较长的值将被substr()
调用截断。将只检索长度正好为6个字符的值-因为
_
是单个字符的通配符。因此,对它应用substr()
不会对结果产生任何影响,因为它的长度不能超过6个字符。如果列的值长于或短于6个字符,则第二个查询将返回较少的行,因为这是一个限制性更强的匹配。如果所有的值都正好是6个字符,则结果将是相同的-但第一个查询中的
substr()
也将是不必要的。您可以看到使用一些不同长度的虚构样本数据的查询之间的差异:
| 格兰姆--潘查亚特|
| - ------|
| ABC定义|
| 乙|
| 学士|
| 巴伯|
| 生物活性炭|
| 巴ABCD|
| BABCDE|
| 贝达CBA|
| 巴氏凝析油|
| 巴伯克德夫格|
| 巴伯德夫|
| 巴卜克代夫吉|
第一个查询返回所有以'B'开头的行,其中一些被截断:
| 普通合伙人|
| - ------|
| 乙|
| 学士|
| 巴伯|
| 生物活性炭|
| 巴ABCD|
| BABCDE|
| 贝达CBA|
| BABCDE|
| BABCDE|
| BABCDE|
| BABCDE|
第二个查询只返回以'B'开头且长度正好为六个字符的查询:
| 格兰姆--潘查亚特|
| - ------|
| BABCDE|
| 贝达CBA|
fiddle