我不能为我的生活弄清楚SQL中的字符串函数可以做什么。我意识到我在书中工作的查询纯粹是为了练习,所以问题是任意的,但是例如:
select substring('San Antonio, TX', 5,3);
为什么不能使用常规Select语句和通配符为此查询获得相同的结果,从字符串的第五个字母开始查找三个字母有什么用呢?简而言之:在实际意义上,什么是字符串函数实际上是好的?谁能给我一些例子?谢谢。
答案 0 :(得分:0)
我认为你的问题有两个部分:功能根本用于什么,特别是子字符串。
一般而言,在数据库中以最简单的形式存储内容非常重要,并且永远不会存储重复或相关数据。后一个原则意味着如果一列与任何一列相关,那么设计是错误的。
例如,您应该存储,比如给定的名称和姓氏,但是您也不应该存储全名 - 可以派生。同样,您可以存储出生日期,但不能存储年龄,因为可以再次导出。
字符串函数对于从简单字符串派生数据非常有用。
特别是,substring
函数用于提取字符串的一部分。如果您有一个复杂的字符串,可能需要将其分解为更小的组件。这对于产品代码或某些类型的序列代码(特别是由部分组成)非常有用。
substring
不对包含不同部分的字符串直接有用。如果他们这样做,那么你需要将它们与更复杂的东西结合起来。
话虽如此,在设计良好的数据库中,substring
函数几乎没有必要。如果数据实际上是部件的组合,那么它应该已经分解成单独的列。这是原子性的原则,确保每个数据项都是最小的单位。
在您的示例中,字符串应该位于2个单独的列中,用于城镇和州,因此不再需要从中提取任何内容。