如果您对SQLServerXML数据类型查询问题和xml查询数据库感兴趣,那么这篇文章一定是您不可错过的。我们将详细讲解SQLServerXML数据类型查询问题的各种细节,并对xml查询数据库进行深入
如果您对SQL Server XML数据类型查询问题和xml查询数据库感兴趣,那么这篇文章一定是您不可错过的。我们将详细讲解SQL Server XML数据类型查询问题的各种细节,并对xml查询数据库进行深入的分析,此外还有关于.net – 如何在Entity Frameworks 4.0 Model中指定SQL Server XML数据类型?、Microsoft Access 数据类型 \MySQL 数据类型 \SQL Server 数据类型、mssql sqlserver null数据类型专题、SQL Server SQL数据类型分析的实用技巧。
本文目录一览:- SQL Server XML数据类型查询问题(xml查询数据库)
- .net – 如何在Entity Frameworks 4.0 Model中指定SQL Server XML数据类型?
- Microsoft Access 数据类型 \MySQL 数据类型 \SQL Server 数据类型
- mssql sqlserver null数据类型专题
- SQL Server SQL数据类型分析
SQL Server XML数据类型查询问题(xml查询数据库)
请参见下面的SQL Server 2005脚本
Declare @xmlData XMLSET @xmlData = ''<?xml version="1.0"?><bookstore xmlns="http://myBooks"> <book genre="autobiography" publicationdate="1981" ISBN="1-861003-11-0"> <title>The Autobiography of Benjamin Franklin</title> <author> <first-name>Benjamin</first-name> <last-name>Franklin</last-name> </author> <price>8.99</price> </book> <book genre="novel" publicationdate="1967" ISBN="0-201-63361-2"> <title>The Confidence Man</title> <author> <first-name>Herman</first-name> <last-name>Melville</last-name> </author> <price>11.99</price> </book> <book genre="philosophy" publicationdate="1991" ISBN="1-861001-57-6"> <title>The Gorgias</title> <author> <first-name>Sidas</first-name> <last-name>Plato</last-name> </author> <price>9.99</price> </book></bookstore>''Select T.Item.query(''.'')From @xmlData.nodes(''/bookstore/book'') AS T(Item)
这个脚本应该给我所有书籍节点的列表。但这并没有带来预期的行为。如果我删除XMLNS,则工作正常。谁能解释?
以下工作正常。
Declare @xmlData XMLSET @xmlData = ''<?xml version="1.0"?><bookstore> <book genre="autobiography" publicationdate="1981" ISBN="1-861003-11-0"> <title>The Autobiography of Benjamin Franklin</title> <author> <first-name>Benjamin</first-name> <last-name>Franklin</last-name> </author> <price>8.99</price> </book> <book genre="novel" publicationdate="1967" ISBN="0-201-63361-2"> <title>The Confidence Man</title> <author> <first-name>Herman</first-name> <last-name>Melville</last-name> </author> <price>11.99</price> </book> <book genre="philosophy" publicationdate="1991" ISBN="1-861001-57-6"> <title>The Gorgias</title> <author> <first-name>Sidas</first-name> <last-name>Plato</last-name> </author> <price>9.99</price> </book></bookstore>''Select T.Item.query(''.'')From @xmlData.nodes(''/bookstore/book'') AS T(Item)
谁能解释我如何更正第一个字词?我想用xmlns运行脚本。
答案1
就像您说的那样-这是因为原始XML数据位于XML名称空间中,如果是这种情况,则还需要在XQuery中使用该XML名称空间:
SELECT T.Item.query(''.'')FROM @xmlData.nodes(''declare namespace ns="http://myBooks";/ns:bookstore/ns:book'') AS T(Item)
您需要将该declare namespacens="http://myBooks";
部分插入XQuery,然后使用定义的名称空间前缀ns
(实际上可以在此处使用任何东西)来引用XML对象。
马克
.net – 如何在Entity Frameworks 4.0 Model中指定SQL Server XML数据类型?
我可以将属性的对象树序列化为字符串并将其作为字符串存储在DB中,但sql Server XML数据类型确实很吸引人.能够以智能方式查询XML数据内容将是非常好的.
但是,我没有看到任何方法在Visual Studio实体建模器中指定我想要XML数据类型.
是完成此操作以在模型中指定字符串字段,发出DDL,然后修改DDL以将字符串字段更改为XML字段的唯一方法吗?这似乎非常脆弱,只写一次,永远不会改变.有没有更好的办法?
解决方法
它们提供了一种解决方法,即使模型生成的实体类上的字符串类型属性为private,并创建一个新属性(在您自己的实体类的部分类中)以从内部字符串属性返回XElement:
public partial class Candidate { private XElement candidateResume = null; public XElement CandidateResume { get { if (candidateResume == null) { candidateResume = XElement.Parse(this.Resume); candidateResume.Changed += (s,e) => { this.Resume = candidateResume.ToString(); } } return candidateResume; } set { candidateResume = value; candidateResume.Changed += (s,e) => { this.Resume = candidateResume.ToString(); } this.Resume = value.ToString(); } } }
像这样创建所需XML类型的shadow属性应该可行,但是在原始字符串属性(Resume)和新shadow属性(CandidateResume)的每次更改之间字符串和XML之间的转换都非常昂贵.
如果有人有任何更好的想法,我仍然愿意接受建议.
Microsoft Access 数据类型 \MySQL 数据类型 \SQL Server 数据类型
一:Microsoft Access 数据类型Text 用于文本或文本与数字的组合。最多 255 个字符。
Memo Memo 用于更大数量的文本。最多存储 65,536 个字符。
Byte 允许 0 到 255 的数字。 1 字节
Integer 允许介于 -32,768 到 32,767 之间的数字。 2 字节
Long 允许介于 -2,147,483,648 与 2,147,483,647 之间的全部数字 4 字节
Single 单精度浮点。处理大多数小数。 4 字节
Double 双精度浮点。处理大多数小数。 8 字节
Currency 用于货币。支持 15 位的元,外加 4 位小数。 8 字节
AutoNumber AutoNumber 字段自动为每条记录分配数字,通常从 1 开始。 4 字节
Date/Time 用于日期和时间 8 字节
Yes/No 逻辑字段,可以显示为 Yes/No、True/False 或 On/Off。 1 比特
Ole Object 可以存储图片、音频、视频或其他 BLOBs (Binary Large OBjects) 最多 1GB
Hyperlink 包含指向其他文件的链接,包括网页。
Lookup Wizard 允许你创建一个可从下列列表中进行选择的选项列表。 4 字节
二:MySQL 数据类型
1: Text 类型:
CHAR (size) 保存固定长度的字符串(可包含字母、数字以及特殊字符)。在括号中指定字符串的长度。最多 255 个字符。
VARCHAR (size) 保存可变长度的字符串(可包含字母、数字以及特殊字符)。在括号中指定字符串的最大长度。最多 255 个字符。
TINYTEXT 存放最大长度为 255 个字符的字符串。
TEXT 存放最大长度为 65,535 个字符的字符串。
BLOB 用于 BLOBs (Binary Large OBjects)。存放最多 65,535 字节的数据。
MEDIUMTEXT 存放最大长度为 16,777,215 个字符的字符串。
MEDIUMBLOB 用于 BLOBs (Binary Large OBjects)。存放最多 16,777,215 字节的数据。
LONGTEXT 存放最大长度为 4,294,967,295 个字符的字符串。
LONGBLOB 用于 BLOBs (Binary Large OBjects)。存放最多 4,294,967,295 字节的数据。
ENUM (x,y,z,etc.) 允许你输入可能值的列表。可以在 ENUM 列表中列出最大 65535 个值。如果列表中不存在插入的值,则插入空值。
SET 与 ENUM 类似,SET 最多只能包含 64 个列表项,不过 SET 可存储一个以上的值。
2: Number 类型:
TINYINT (size) -128 到 127 常规。0 到 255 无符号 *。在括号中规定最大位数。
SMALLINT (size) -32768 到 32767 常规。0 到 65535 无符号 *。在括号中规定最大位数。
MEDIUMINT (size) -8388608 到 8388607 普通。0 to 16777215 无符号 *。在括号中规定最大位数。
INT (size) -2147483648 到 2147483647 常规。0 到 4294967295 无符号 *。在括号中规定最大位数。
BIGINT (size) -9223372036854775808 到 9223372036854775807 常规。0 到 18446744073709551615 无符号 *。在括号中规定最大位数。
FLOAT (size,d) 带有浮动小数点的小数字。在括号中规定最大位数。在 d 参数中规定小数点右侧的最大位数。
DOUBLE (size,d) 带有浮动小数点的大数字。在括号中规定最大位数。在 d 参数中规定小数点右侧的最大位数。
DECIMAL (size,d) 作为字符串存储的 DOUBLE 类型,允许固定的小数点。
3: Date 类型:
DATE () 日期。格式:YYYY-MM-DD 注释:支持的范围是从 ''1000-01-01'' 到 ''9999-12-31''
DATETIME () * 日期和时间的组合。格式:YYYY-MM-DD HH:MM:SS 注释:支持的范围是从 ''1000-01-01 00:00:00'' 到 ''9999-12-31 23:59:59''
TIMESTAMP () * 时间戳。TIMESTAMP 值使用 Unix 纪元 (''1970-01-01 00:00:00'' UTC) 至今的描述来存储。格式:YYYY-MM-DD HH:MM:SS 注释:支持的范围是从 ''1970-01-01 00:00:01'' UTC 到 ''2038-01-09 03:14:07'' UTC
TIME () 时间。格式:HH:MM:SS 注释:支持的范围是从 ''-838:59:59'' 到 ''838:59:59''
YEAR () 2 位或 4 位格式的年。 注释:4 位格式所允许的值:1901 到 2155。2 位格式所允许的值:70 到 69,表示从 1970 到 2069。
三:SQL Server 数据类型
1: Character 字符串:
char (n) 固定长度的字符串。最多 8,000 个字符。
varchar (n) 可变长度的字符串。最多 8,000 个字符。
varchar (max) 可变长度的字符串。最多 1,073,741,824 个字符。
text 可变长度的字符串。最多 2GB 字符数据。
2: Unicode 字符串:
nchar (n) 固定长度的 Unicode 数据。最多 4,000 个字符。
nvarchar (n) 可变长度的 Unicode 数据。最多 4,000 个字符。
nvarchar (max) 可变长度的 Unicode 数据。最多 536,870,912 个字符。
ntext 可变长度的 Unicode 数据。最多 2GB 字符数据。
3: Binary 类型:
bit 允许 0、1 或 NULL
binary (n) 固定长度的二进制数据。最多 8,000 字节。
varbinary (n) 可变长度的二进制数据。最多 8,000 字节。
varbinary (max) 可变长度的二进制数据。最多 2GB 字节。
image 可变长度的二进制数据。最多 2GB。
4: Number 类型:
tinyint 1 字节 允许从 0 到 255 的所有数字。
smallint 2 字节 允许从 -32,768 到 32,767 的所有数字。
int 4 字节 允许从 -2,147,483,648 到 2,147,483,647 的所有数字。
bigint 8 字节 允许介于 -9,223,372,036,854,775,808 和 9,223,372,036,854,775,807 之间的所有数字。 8 字节
decimal (p,s) 5-17 字节 固定精度和比例的数字。允许从 -10^38 +1 到 10^38 -1 之间的数字。p 参数指示可以存储的最大位数(小数点左侧和右侧)。p 必须是 1 到 38 之间的值。默认是 18。s 参数指示小数点右侧存储的最大位数。s 必须是 0 到 p 之间的值。默认是 0。
numeric (p,s) 5-17 字节 固定精度和比例的数字。允许从 -10^38 +1 到 10^38 -1 之间的数字。p 参数指示可以存储的最大位数(小数点左侧和右侧)。p 必须是 1 到 38 之间的值。默认是 18。s 参数指示小数点右侧存储的最大位数。s 必须是 0 到 p 之间的值。默认是 0。
smallmoney 4 字节 介于 -214,748.3648 和 214,748.3647 之间的货币数据。
money 8 字节 介于 -922,337,203,685,477.5808 和 922,337,203,685,477.5807 之间的货币数据。
float (n) 4 或 8 字节 从 -1.79E + 308 到 1.79E + 308 的浮动精度数字数据。参数 n 指示该字段保存 4 字节还是 8 字节。float (24) 保存 4 字节,而 float (53) 保存 8 字节。n 的默认值是 53。
real 4 字节 从 -3.40E + 38 到 3.40E + 38 的浮动精度数字数据。
5: Date 类型:
datetime 8 字节 从 1753 年 1 月 1 日 到 9999 年 12 月 31 日,精度为 3.33 毫秒。
datetime2 6-8 字节 1753 年 1 月 1 日 到 9999 年 12 月 31 日,精度为 100 纳秒。
smalldatetime 4 字节 从 1900 年 1 月 1 日 到 2079 年 6 月 6 日,精度为 1 分钟。
date 3 字节。 从 0001 年 1 月 1 日 到 9999 年 12 月 31 日。
time 3-5 字节 仅存储时间。精度为 100 纳秒。
datetimeoffset 8-10 字节 datetime2 相同,外加时区偏移。
timestamp 存储唯一的数字,每当创建或修改某行时,该数字会更新。timestamp 基于内部时钟,不对应真实时间。每个表只能有一个 timestamp 变量。
mssql sqlserver null数据类型专题
摘要: 下文将详细讲述sql server NULL(空值)的相关知识,如下所示: 实验环境: sql server 2008 R2
NULL(空值)简介:
mssql sqlserver null数据值简介-1
mssql sqlserver null值详细说明-2
mssql sqlserver null 值简介-3
mssql sqlserver关于表设计中空值(null)设计的相关建议
NULL操作分享:
mssql sqlserver sql脚本检索null的方法分享
mssql sql server null值查询采用等于号的方法分享
mssql sqlserver 修改列属性将其设置为非null
mssql sqlserver in 关键字在值为null的应用举例
mssql sqlserver sql脚本中sum、count函数--包含空值统计
NULL 涉及函数:
mssql sqlserver isnull coalesce函数用法区别说明
mssql sqlserver 将字段null(空值)值替换为指定值的三种方法分享
mssql sqlserver 比较运算符null注意事项
mssql sql server 其它系统函数 isnull() 空值替换函数应用简介
SQL Server SQL数据类型分析
感兴趣的小伙伴,下面一起跟随小编 jb51.cc的小编两巴掌来看看吧!
(1)二进制数据类型
二进制数据包括 Binary、Varbinary 和 ImageBinary 数据类型既可以是固定长度的(Binary),也可以是变长度的。
Binary[(n)] 是 n 位固定的二进制数据。其中,n 的取值范围是从 1 到 8000。其存储窨的大小是 n + 4 个字节。
Varbinary[(n)] 是 n 位变长度的二进制数据。其中,n 的取值范围是从 1 到 8000。其存储窨的大小是 n + 4个字节,不是n 个字节。
在 Image 数据类型中存储的数据是以位字符串存储的,不是由 sql Server 解释的,必须由应用程序来解释。例如,应用程序可以使用BMP、TIEF、GIF 和 JPEG 格式把数据存储在 Image 数据类型中。
(2)字符数据类型
字符数据的类型包括 Char,Varchar 和 Text字符数据是由任何字母、符号和数字任意组合而成的数据。
Varchar 是变长字符数据,其长度不超过 8KB。Char 是定长字符数据,其长度最多为 8KB。超过 8KB 的ASCII 数据可以使用Text数据类型存储。例如,因为 Html 文档全部都是 ASCII 字符,并且在一般情况下长度超过 8KB,所以这些文档可以 Text 数据类型存储在sql Server 中。
(3)Unicode 数据类型
Unicode 数据类型包括 Nchar,Nvarchar 和Ntext在 Microsoft sql Server 中,传统的非 Unicode 数据类型允许使用由特定字符集定义的字符。在 sql Server安装过程中,允许选择一种字符集。使用 Unicode 数据类型,列中可以存储任何由Unicode 标准定义的字符。在 Unicode 标准中,包括了以各种字符集定义的全部字符。使用Unicode数据类型,所战胜的窨是使用非 Unicode 数据类型所占用的窨大小的两倍。
在 sql Server 中,Unicode 数据以 Nchar、Nvarchar 和 Ntext 数据类型存储。使用这种字符类型存储的列可以存储多个字符集中的字符。当列的长度变化时,应该使用Nvarchar 字符类型,这时最多可以存储 4000 个字符。当列的长度固定不变时,应该使用 Nchar 字符类型,同样,这时最多可以存储4000 个字符。当使用 Ntext 数据类型时,该列可以存储多于 4000 个字符。
(4)日期和时间数据类型
日期和时间数据类型包括 Datetime 和 Smalldatetime两种类型日期和时间数据类型由有效的日期和时间组成。例如,有效的日期和时间数据包括“4/01/98 12:15:00:00:00 PM”和“1:28:29:15:01AM 8/17/98”。前一个数据类型是日期在前,时间在后一个数据类型是霎时间在前,日期在后。在 Microsoft sql Server中,日期和时间数据类型包括Datetime 和 Smalldatetime 两种类型时,所存储的日期范围是从 1753 年 1 月 1 日开始,到9999 年12 月 31 日结束(每一个值要求 8 个存储字节)。使用 Smalldatetime 数据类型时,所存储的日期范围是 1900年 1 月 1日 开始,到 2079 年 12 月 31 日结束(每一个值要求 4 个存储字节)。
日期的格式可以设定。设置日期格式的命令如下:
Set DateFormat {format | @format _var|
其中,format | @format_var 是日期的顺序。有效的参数包括 MDY、DMY、YMD、YDM、MYD 和 DYM。在默认情况下,日期格式为MDY。
例如,当执行 Set DateFormat YMD 之后,日期的格式为年 月 日 形式;当执行 Set DateFormat DMY 之后,日期的格式为日 月有年 形式
(5)数字数据类型
数字数据只包含数字。数字数据类型包括正数和负数、小数(浮点数)和整数整数由正整数和负整数组成,例如 39、25、0-2 和 33967。在 Micrsoft sql Server 中,整数存储的数据类型是 Int,Smallint和 tinyint。Int 数据类型存储数据的范围大于 Smallint 数据类型存储数据的范围,而 Smallint 据类型存储数据的范围大于tinyint 数据类型存储数据的范围。使用 Int 数据狗昔存储数据的范围是从 -2 147 483 648 到 2 147 483 647(每一个值要求4个字节存储空间)。使用 Smallint 数据类型时,存储数据的范围从 -32 768 到 32 767(每一个值要求2个字节存储空间)。使用tinyint 数据类型时,存储数据的范围是从0 到255(每一个值要求1个字节存储空间)。
精确小娄数据在 sql Server 中的数据类型是 Decimal 和 Numeric。这种数据所占的存储空间根据该数据的位数后的位数来确定。
在sql Server 中,近似小数数据的数据类型是 Float 和 Real。例如,三分之一这个分数记作。3333333,当使用近似数据类型时能准确表示。因此,从系统中检索到的数据可能与存储在该列中数据不完全一样。
(6)货币数据表示正的或者负的货币数量 。
在 Microsoft sql Server 中,货币数据的数据类型是Money 和 SmallmoneyMoney数据类型要求 8 个存储字节,Smallmoney 数据类型要求 4 个存储字节。
(7)特殊数据类型
特殊数据类型包括前面没有提过的数据类型。特殊的数据类型有3种,即 Timestamp、Bit 和 Uniqueidentifier。Timestamp 用于表示sql Server 活动的先后顺序,以二进投影的格式表示。Timestamp 数据与插入数据或者日期和时间没有关系。
Bit 由 1 或者 0 组成。当表示真或者假、ON 或者 OFF 时,使用 Bit 数据类型。例如,询问是否是每一次访问的客户机请求可以存储在这种数据类型的列中。
Uniqueidentifier 由 16 字节的十六进制数字组成,表示一个全局唯一的。当表的记录行要求唯一时,GUID是非常有用。例如,在客户标识号列使用这种数据类型可以区别不同的客户。
2.用户定义的数据类型
用户定义的数据类型基于在 Microsoft sql Server 中提供的数据类型。当几个表中必须存储同一种数据类型时,并且为保证这些列有相同的数据类型、长度和可空性时,可以使用用户定义的数据类型。例如,可定义一种称为 postal_code 的数据类型,它基于 Char 数据类型。当创建用户定义的数据类型时,必须提供三个数:数据类型的名称、所基于的系统数据类型和数据类型的可空性。
(1)创建用户定义的数据类型
创建用户定义的数据类型可以使用 Transact-sql 语句。系统存储过程 sp_addtype 可以来创建用户定义的数据类型。其语法形式如下:sp_addtype {type},[,system_data_bype][,'null_type']
其中,type 是用户定义的数据类型的名称。system_data_type 是系统提供的数据类型,例如 Decimal、Int、Char 等等。 null_type 表示该数据类型是如何处理空值的,必须使用单引号引起来,例如'NULL'、'NOT NULL'或者'NONULL'。
例子:
Use cust
Exec sp_addtype ssn,'Varchar(11)',Not Null'
创建一个用户定义的数据类型 ssn,其基于的系统数据类型是变长为11 的字符,不允许空。
例子:
Use cust
Exec sp_addtype birthday,datetime,'Null'
创建一个用户定义的数据类型 birthday,其基于的系统数据类型是 DateTime,允许空。
例子:
Use master
Exec sp_addtype telephone,'varchar(24),'Not Null'
Eexc sp_addtype fax,'varchar(24)','Null'
创建两个数据类型,即 telephone 和 fax
(2)删除用户定义的数据类型
当用户定义的数据类型不需要时,可删除。删除用户定义的数据类型的命令是 sp_droptype {'type'}。
例子:
Use master
Exec sp_droptype 'ssn'
注意:当表中的列还正在使用用户定义的数据类型时,或者在其上面还绑定有默认或者规则时,这种用户定义的数据类型不能删除。
sql SERVER的字段类型说明
以下为sql SERVER7.0以上版本的字段类型说明。sql SERVER6.5的字段类型说明请参考sql SERVER提供的说明。
字段类型 | 描述 |
bit | 0或1的整型数字 |
int | 从-2^31(-2,147,483,648)到2^31(2,647)的整型数字 |
smallint | 从-2^15(-32,768)到2^15(32,767)的整型数字 |
tinyint | 从0到255的整型数字 |
decimal | 从-10^38到10^38-1的定精度与有效位数的数字 |
numeric | decimal的同义词 |
money | 从-2^63(-922,337,203,685,477.5808)到2^63-1(922,477.5807)的货币数据,最小货币单位千分之十 |
smallmoney | 从-214,748.3648到214,748.3647的货币数据,最小货币单位千分之十 |
float | 从-1.79E+308到1.79E+308可变精度的数字 |
real | 从-3.04E+38到3.04E+38可变精度的数字 |
datetime | 从1753年1月1日到9999年12日31的日期和时间数据,最小时间单位为百分之三秒或3.33毫秒 |
smalldatetime | 从1900年1月1日到2079年6月6日的日期和时间数据,最小时间单位为分钟 |
timestamp | 时间戳,一个数据库宽度的唯一数字 |
uniqueidentifier | 全球唯一标识符GUID |
char | 定长非Unicode的字符型数据,最大长度为8000 |
varchar | 变长非Unicode的字符型数据,最大长度为8000 |
text | 变长非Unicode的字符型数据,最大长度为2^31-1(2G) |
nchar | 定长Unicode的字符型数据,最大长度为8000 |
nvarchar | 变长Unicode的字符型数据,最大长度为8000 |
ntext | 变长Unicode的字符型数据,最大长度为2^31-1(2G) |
binary | 定长二进制数据,最大长度为8000 |
varbinary | 变长二进制数据,最大长度为8000 |
image | 变长二进制数据,最大长度为2^31-1(2G) |
关于SQL Server XML数据类型查询问题和xml查询数据库的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于.net – 如何在Entity Frameworks 4.0 Model中指定SQL Server XML数据类型?、Microsoft Access 数据类型 \MySQL 数据类型 \SQL Server 数据类型、mssql sqlserver null数据类型专题、SQL Server SQL数据类型分析的相关知识,请在本站寻找。
本文标签: