爱易网页
数据库教程
SQL数据操作基础(中级)9
日期:2013-06-08 浏览次数:20632 次
转换数据 SQL Sever足够强大,可以在需求的时候把大部分数值从一品种型转换为另一品种型。例如,要比较SMALLINT型和INT型数据的大小,你不需求进行显式的类型转换。SQL Sever会为你完成这项任务。但是,当你想在字符型数据和其它类型的数据之间进行转换时,你的确需求本人进行转换操作。例如,假设你想从一个MONEY型字段中取出所有的值,并在结果后面加上字符串“US Dollars”。你需求使用函数CONVERT(),如下例所示: SELECT CONVERT(CHAR(8),price)+’US Dollars’ FROM orders 函数CONVERT()带有两个变量。第一个变量指定了数据类型和长度。第二个变量指定了要进行转换的字段。在这个例子中,字段price被转换成长度为8个字符的CHAR型字段。字段price要被转换成字符型,才可以在它后面连接上字符串’US Dollars’。 当向BIT型,DATETIME型,INT型,或者NUMERIC型字段添加字符串时,你需求进行同样的转换操作。例如,下面的语句在一个SELECT语句的查询结果中加入字符串’The vote is’,该SELECT语句前往一个BIT型字段的值: SELECT ‘The vote is’+CONVERT(CHAR(1),vote) FROM opinion 下面是这个语句的结果示例: The vote is 1 The vote is 1 The vote is 0 (3 row(s) affected) 如果你不进行显式的转换,你会收到如下的错误信息: Implicit conversion from datatype ‘varchar’ to ‘bit’ is not allowec. Use the CONVERT function to run this query. 操作字符串数据 SQL Sever有许多函数和表达式,使你能对字符串进行风趣的操作,包括各种各样的模式婚配和字符转换。在这一节中,你将学习如何使用最重要的字符函数和表达式。 婚配通配符 假设你想建立一个与Yahoo功用类似的Internet目录。你可以建立一个表用来保存一系列的站点名称,统一资源定位器(URL),描述,和类别,并允许访问者通过在HTML form中输入关键字来检索这些内容。 假如有一个访问者想从这个目录中得到其描述中包含关键字trading card的站点的列表。要取出正确的站点列表,你也许试图使用这样的查询: SELECT site_name FROM site_directory WHERE site_desc=’trading card’ 这个查询可以任务。但是,它只能前往那些其描述中只要trading card这个字符串的站点。例如,一个描述为We have the greatest collection of trading cards in the world!的站点不会被前往。 要把一个字符串与另一个字符串的一部分相婚配,你需求使用通配符。你使用通配符和关键字LIKE来实现模式婚配。下面的语句使用通配符和关键字LIKE重写了上面的查询,以前往所有正确站点的名字: SELECT SITE_name FROM site_directory WHERE site_desc LIKE ‘%trading cark%’ 在这个例子中,所有其描述中包含表达式trading card的站点都被前往。描述为We have the greatest collection of trading cards in the world!的站点也被前往。当然,如果一个站点的描述中包含I am trading cardboard boxes online ,该站点的名字也被前往。 留意本例中百分号的使用。百分号是通配符的例子之一。它代表0个或多个字符。通过把trading card括在百分号中,所有其中嵌有字符串trading card的字符串都被婚配。 如今,假设你的站点目录变得太大而不能在一页中完全显示。你决定把目录分成两部分。在第一页,你想显示所有首字母在A到M之间的站点。在第二页,你想显示所有首字母在N到Z之间的站点。要得到第一页的站点列表,你可以使用如下的SQL语句: SELECT site_name FROM site_directory WHERE site_name LIKE ‘[A-M]%’ 在这个例子中使用了表达式[A-M],只取出那些首字母在A到M之间的站点。中括号([])用来婚配处在指定范围内的单个字符。要得到第二页中显示的站点,应使用这个语句: SELECT site_name FROM site_directory WHERE site_name LIKE ‘[N-Z]%’ 在这个例子中,括号中的表达式代表任何处在N到Z之间的单个字符。 假设你的站点目录变得更大了,你如今需求把目录分成更多页。如果你想显示那些以A,B或C开头的站点,你可以用下面的查询来实现: SELECT site_name FROM site_directory WHERE site_name LIKE ‘[ABC]%’ 在这个例子中,括号中的表达式不再指定一个范围,而是给出了一些字符。任何一个其名字以这些字符中的任一个开头的站点都将被前往。 通过在括号内的表达式中同时包含一个范围和一些指定的字符,你可以把这两种方法结合起来。例如,用下面的这个查询,你可以取出那些首字母在C到F之间,或者以字母Y开头的站点: SELECT site_name FROM site_directory WHERE site_name LIKE ‘[C-FY]%’ 在这个例子中,名字为Collegescape和Yahoo的站点会被选取,而名字为Magicw3的站点则不会被选取。 你也可以使用脱字符(^)来排除特定的字符。例如,要得到那些名字不以Y开头的站点,你可以使用如下的查询: SELECT site_name FROM site_directory WHERE site_name LIKE ‘[^Y]%’ 对给定的字符或字符范围均可以使用脱字符。 最后,通过使用下划线字符(_),你可以婚配任何单个字符。例如,下面这个查询前往每一个其名字的第二个字符为任何字母的站点: SELECT site_name FROM site_directory WHERE site_name LIKE ‘M_crosoft’ 这个例子既前往名为Microsoft的站点,也前往名为Macrosoft的站点。但是,名字为Moocrosoft的站点则不被前往。与通配符’%’不同,下划线只代表单个字符。 留意: 如果你想婚配百分号或下划线字符本身,你需求把它们括在方括号中。如果你想婚配连字符(-),应把它指定为方括号中的第一个字符。如果你想婚配方括号,应把它们也括在方括号中。例如,下面的语句前往所有其描述中包含百分号的站点: SELECT site_name FROM site_directory WHERE site_desc LIKE ‘%[%]%’ 婚配发音 Microsoft SQL 有两个允许你按照发音来婚配字符串的函数。函数SOUNDEX()给一个字符串分配一个音标码,函数DIFFERENCE()按照发音比较两个字符串。当你不知道一个名字的确切拼写,但多少知道一点它的发音时,使用这两个函数将有助于你取出该记录。 例如,如果你建立一个Internet目录,你也许想添加一个选项,允许访问者按照站点名的发音来搜索站点,而不是按名字的拼写。考虑如下的语句: SELECT site_name FROM site_directory WHERE DIFFERENCE(site_name , ‘Microsoft’>3 这个语句使用函数DEFFERENCE()来取得其名字的发音与Microsoft非常类似的站点。函数DIFFERENCE()前往一个0到4之间的数字。如果该函数前往4,表示发音非常相近;如果该函数前往0,说明这两个字符串的发音相差很大。 例如,上面的语句将前往站点名Microsoft和Macrosoft。这两个名字的发音与Microsoft都很类似。如果你把上一语句中的大于3改为大于2,那么名为Zicroso
免责声明: 本文仅代表作者个人观点,与爱易网无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。