最近我读到了UDT.我创建了一个类型,但我有一个问题.请查看以下内容
---drop type ssn
CREATE TYPE ssn
FROM VARCHAR(11) NOT NULL;
DECLARE @er ssn;
IF Object_id('TEMPDB.DBO.#ter', 'U') IS NOT NULL
DROP TABLE #ter;
CREATE TABLE #ter (
PERIOD_SID INT
,PERIOD_QUAR VARCHAR(10) PRIMARY KEY (PERIOD_SID)
)
INSERT INTO #ter (
PERIOD_SID
,PERIOD_QUAR
)
SELECT *
FROM (
VALUES (
(1)
,(@er)
)
) V(p, q)
Run Code Online (Sandbox Code Playgroud)
我创建了一个类型为ssn,varchar(11)不为null,并运行上面的一个逻辑,它成功执行

根据我的假设,它应该抛出一个错误.
我需要知道为什么上面的逻辑成功运行.
编辑
根据建议我已将此udt添加为AQL服务器中的列,因为在oracle中我们可以创建一个集合类似于UDT的列
IF Object_id('TEMPDB.DBO.#ter1', 'U') IS NOT NULL
DROP TABLE #ter1;
CREATE TABLE #ter1 (
PERIOD_SID INT
,PERIOD_QUAR ssn PRIMARY KEY (PERIOD_SID)
) …Run Code Online (Sandbox Code Playgroud) 我有一张名为的桌子calci.以下是样本数据
CREATE TABLE calci
(RN int, FREQ int, price int)
;
INSERT INTO calci
(RN, FREQ, price)
VALUES
(1, 1, 3),
(2, 2, 4),
(3, 3, 5),
(4, 4, 6),
(5, 5, 7),
(6, 6, 8),
(7, 1, 5),
(8, 2, 6),
(9, 3, 9),
(10, 4, 7),
(11, 5, 5),
(12, 6, 1),
(13, 1, 3)
;
Run Code Online (Sandbox Code Playgroud)
根据freq(1-6)的总和我只需要3条记录
结果应该是这样的
price
33 -----sum of first 6 records
33 -----sum of next six records
3 -----sum of …Run Code Online (Sandbox Code Playgroud) 我正在学习Sql server中的分配单元,并了解了3种类型
行溢出数据.
IF EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE
TABLE_NAME='TEST_ALLOCATION_UNITS')
DROP TABLE TEST_ALLOCATION_UNITS
CREATE TABLE TEST_ALLOCATION_UNITS(
TEST_ID INT IDENTITY(1,1)
,NAME VARCHAR(4000)
,NAME1 VARCHAR(5000)
)
GO
INSERT INTO TEST_ALLOCATION_UNITS (NAME,NAME1) VALUES ('APPLE','BANANA')
GO 500
Run Code Online (Sandbox Code Playgroud)
我在其中插入了500条记录
不,我已经运行了代码,我得到了这样的结果
select s.type_desc before_alter from sys.allocation_units s
join sys.partitions p on p.partition_id=s.container_id
where p.object_id=object_id('test_allocation_units')
Run Code Online (Sandbox Code Playgroud)
现在我改变了表并将每个列的大小减少到50个字节,然后再次运行上面的select语句
alter table test_allocation_units alter column name varchar(50)
alter table test_allocation_units alter column name1 varchar(50)
select s.type_desc from sys.allocation_units s
join sys.partitions p on p.partition_id=s.container_id
where p.object_id=object_id('test_allocation_units')
Run Code Online (Sandbox Code Playgroud)
题 …
我有一张包含以下数据的表格
IF OBJECT_ID('TEMPDB.DBO.#t1', 'U') IS NOT NULL
DROP TABLE #t1;
CREATE TABLE #t1
([c1] varchar(100), [c2] varchar(10), [c3] varchar(100), [c4] varchar(100))
;
INSERT INTO #t1
([c1], [c2], [c3], [c4])
VALUES
(93, '60-1.1.1.', 60, 3),
(104, '60-1.2.1.', 60, 3),
(102, '60-1.1.2.', 60, 3),
(101, '60-1.2.2.', 60, 3),
(92, '60-1.1.3.', 60, 3),
(96, '60-1.2.3.', 60, 3),
(103, '60-1.1.4.', 60, 3),
(94, '60-1.2.4.', 60, 3),
(105, '60-1.2.5.', 60, 3),
(97, '60-1.2.6.', 60, 3),
(99, '60-1.2.7.', 60, 3),
(100, '60-1.2.8.', 60, 3),
(98, '60-1.2.9.', …Run Code Online (Sandbox Code Playgroud) 当我使用rownum和关键字之间时,查询不会返回任何行.任何人都可以解释为什么查询不检索任何行?
select * from cus where rownum between 2 and 6;
Run Code Online (Sandbox Code Playgroud)
我只是想检查当rownum与关键字之间使用时是否会起作用.所以,我只是尝试了上面的查询来显示介于2和6之间的行.但是当我尝试执行查询时,它不会检索任何行.
提前致谢