udt veri işleme
Transact-SQLözel bir sözdizimi INSERT, update veya delete deyimleri için kullanıcı tanımlı türü (udt) sütunlardaki verileri değiştirirken sağlar. Transact-SQLYerel veri türlerini udt türü cast cast veya convert işlevleri kullanılır.
udt sütunda veri ekleme
Aşağıdaki Transact-SQLörnek veri üç satır INSERT deyimleri Puan tablosu. Noktası veri türü oluşur x ve y tamsayı değerlerini udt özellikler olarak sunulur. Virgülle ayrılmış cast cast veya convert işlevini kullanmalısınız x ve y değerleri için noktası türü. İlk iki ifade, bir dize değeri dönüştürmek için çevir fonksiyonunu kullanın. noktası türü ve üçüncü ifade cast işlevi kullanır:
INSERT INTO dbo.Points (PointValue) VALUES (CONVERT(Point, '3,4'));
INSERT INTO dbo.Points (PointValue) VALUES (CONVERT(Point, '1,5'));
INSERT INTO dbo.Points (PointValue) VALUES (CAST ('1,99' AS Point));
INSERT INTO dbo.Points (PointValue) VALUES (CONVERT(Point, '3,4'));
INSERT INTO dbo.Points (PointValue) VALUES (CONVERT(Point, '1,5'));
INSERT INTO dbo.Points (PointValue) VALUES (CAST ('1,99' AS Point));
Veri seçme
Aşağıdaki seçme deyimini udt ikili değerini seçer.
SELECT ID, PointValue FROM dbo.Points
SELECT ID, PointValue FROM dbo.Points
Okunabilir bir biçimde görüntülenen çıktı görmek için arama ToStringyöntemi noktası değeri için dize gösterimine dönüştürür udt.
SELECT ID, PointValue.ToString() AS PointValue
FROM dbo.Points;
SELECT ID, PointValue.ToString() AS PointValue
FROM dbo.Points;
Bu aşağıdaki sonuçları üretir.
IDPointValue
----------
13,4
21,5
31,99
IDPointValue
----------
13,4
21,5
31,99
Ayrıca Transact-SQLaynı sonuçları elde etmek için cast ve convert işlevlerini.
SELECT ID, CAST(PointValue AS varchar)
FROM dbo.Points;
SELECT ID, CONVERT(varchar, PointValue)
FROM dbo.Points;
SELECT ID, CAST(PointValue AS varchar)
FROM dbo.Points;
SELECT ID, CONVERT(varchar, PointValue)
FROM dbo.Points;
Noktası udt, daha sonra tek tek seçebilirsiniz özellikleri x ve y koordinatları sunar. Aşağıdaki Transact-SQLdeyimi x ve y koordinatlarını ayrı olarak seçer:
SELECT ID, PointValue.X AS xVal, PointValue.Y AS yVal
FROM dbo.Points;
SELECT ID, PointValue.X AS xVal, PointValue.Y AS yVal
FROM dbo.Points;
x ve y özellikleri, sonuç kümesinde görüntülenir bir tamsayı değer döndürür.
IDxValyVal
----------
134
215
3199
IDxValyVal
----------
134
215
3199
Değişkenlerle çalışmak
Bir değişken bir udt türü için atamak için declare bildirimi kullanarak değişkenler çalışabilirsiniz. Aşağıdaki deyimleri kullanarak bir değer ata Transact-SQLdeyimi ayarlamak ve UDT's çağırarak sonuçlarını görüntülemek ToStringdeğişken yöntemi:
DECLARE @PointValue Point;
SET @PointValue = (SELECT PointValue FROM dbo.Points
WHERE ID = 2);
SELECT @PointValue.ToString() AS PointValue;
DECLARE @PointValue Point;
SET @PointValue = (SELECT PointValue FROM dbo.Points
WHERE ID = 2);
SELECT @PointValue.ToString() AS PointValue;
Sonuç kümesi değişken değeri görüntüler:
PointValue
----------
-1,5
PointValue
----------
-1,5
Aşağıdaki Transact-SQLdeyimleri select kullanarak aynı sonucu elde etmek yerine set değişken atama için:
DECLARE @PointValue Point;
SELECT @PointValue = PointValue FROM dbo.Points
WHERE ID = 2;
SELECT @PointValue.ToString() AS PointValue;
DECLARE @PointValue Point;
SELECT @PointValue = PointValue FROM dbo.Points
WHERE ID = 2;
SELECT @PointValue.ToString() AS PointValue;
Değişken atama ise kendi set deyimi için her değişken atama set sözdizimi gerektirir seçin, bir select deyimi içinde birden çok değişken atamak sağlar için seçin ve set kullanarak arasındaki fark.
Veri karşılaştırma
Karşılaştırma işleçleri Örneğin sizin udt değerleri karşılaştırmak için kullanabileceğiniz IsByteOrderedözelliği truesınıfını tanımlarken Daha fazla bilgi için, bkz. Bir kullanıcı tanımlı türü oluşturma.
SELECT ID, PointValue.ToString() AS Points
FROM dbo.Points
WHERE PointValue > CONVERT(Point, '2,2');
SELECT ID, PointValue.ToString() AS Points
FROM dbo.Points
WHERE PointValue > CONVERT(Point, '2,2');
UDT bakmaksızın iç değerleri karşılaştırabilirsiniz IsByteOrderedkendilerini karşılaştırılabilir değerler ayarı. Aşağıdaki Transact-SQLdeyimi x y: büyük olduğu satırları seçer
SELECT ID, PointValue.ToString() AS PointValue
FROM dbo.Points
WHERE PointValue.X < PointValue.Y;
SELECT ID, PointValue.ToString() AS PointValue
FROM dbo.Points
WHERE PointValue.X < PointValue.Y;
Ayrıca, bu sorgu için eşleşen bir PointValue arar gösterildiği gibi değişkenleri ile karşılaştırma işleçleri de kullanabilirsiniz.
DECLARE @ComparePoint Point;
SET @ComparePoint = CONVERT(Point, '3,4');
SELECT ID, PointValue.ToString() AS MatchingPoint
FROM dbo.Points
WHERE PointValue = @ComparePoint;
DECLARE @ComparePoint Point;
SET @ComparePoint = CONVERT(Point, '3,4');
SELECT ID, PointValue.ToString() AS MatchingPoint
FROM dbo.Points
WHERE PointValue = @ComparePoint;
udt yöntemleri çağırma
Ayrıca sizin udt tanımlanan yöntemleri çağırabilirsiniz Transact-SQL. Noktası sınıf içeren üç yöntem, Distance, DistanceFrom, ve DistanceFromXY. Bu üç yöntemleri tanımlayan kod listeleri için bkz: Kullanıcı tanımlı türler kodlama.
Aşağıdaki Transact-SQLdeyimi aramalar PointValue.Distanceyöntemi:
SELECT ID, PointValue.X AS [Point.X],
PointValue.Y AS [Point.Y],
PointValue.Distance() AS DistanceFromZero
FROM dbo.Points;
SELECT ID, PointValue.X AS [Point.X],
PointValue.Y AS [Point.Y],
PointValue.Distance() AS DistanceFromZero
FROM dbo.Points;
Sonuçları görüntülenir mesafe sütunu:
IDXYDistance
------------------------
1345
2155.09901951359278
319999.0050503762308
IDXYDistance
------------------------
1345
2155.09901951359278
319999.0050503762308
DistanceFromYöntemi bir bağımsız değişken alır işaret veri türü ve görüntüler kadar belirtilen noktası PointValue uzaklığı:
SELECT ID, PointValue.ToString() AS Pnt,
PointValue.DistanceFrom(CONVERT(Point, '1,99')) AS DistanceFromPoint
FROM dbo.Points;
SELECT ID, PointValue.ToString() AS Pnt,
PointValue.DistanceFrom(CONVERT(Point, '1,99')) AS DistanceFromPoint
FROM dbo.Points;
Sonuçları sonuçlarını görüntülemek DistanceFromyöntemi tablosundaki her satır için:
ID PntDistanceFromPoint
---------------------
13,495.0210502993942
21,594
31,990
ID PntDistanceFromPoint
---------------------
13,495.0210502993942
21,594
31,990
DistanceFromXYYöntemi alır bağımsız olarak ayrı ayrı Puan:
SELECT ID, PointValue.X as X, PointValue.Y as Y,
PointValue.DistanceFromXY(1, 99) AS DistanceFromXY
FROM dbo.Points
SELECT ID, PointValue.X as X, PointValue.Y as Y,
PointValue.DistanceFromXY(1, 99) AS DistanceFromXY
FROM dbo.Points
Sonuç kümesi aynıdır DistanceFromyöntemi.
udt sütun veri güncelleştirme
udt sütun verileri güncelleştirmek için Transact-SQLupdate deyimi. udt yöntemi, nesnenin durumunu güncelleştirmek için de kullanabilirsiniz. Aşağıdaki Transact-SQLdeyimi tablodaki tek bir satır güncelleştirir:
UPDATE dbo.Points
SET PointValue = CAST('1,88' AS Point)
WHERE ID = 3
UPDATE dbo.Points
SET PointValue = CAST('1,88' AS Point)
WHERE ID = 3
udt öğeleri ayrı ayrı da güncelleştirebilirsiniz. Aşağıdaki Transact-SQLdeyimi güncelleştirmeleri yalnızca y koordinatı:
UPDATE dbo.Points
SET PointValue.Y = 99
WHERE ID = 3
UPDATE dbo.Points
SET PointValue.Y = 99
WHERE ID = 3
udt bayt olarak sipariş ile tanımlanmış true, Transact-SQLudt sütun where yan tümcesinde değerlendirebilirsiniz.
UPDATE dbo.Points
SET PointValue = '4,5'
WHERE PointValue = '3,4';
UPDATE dbo.Points
SET PointValue = '4,5'
WHERE PointValue = '3,4';
Kısıtlamaları güncelleştiriliyor
Sen cant'güncelleştirmek kullanarak aynı anda birden fazla özellik Transact-SQL. Örneğin, aşağıdaki güncelleştirme deyimini bir udate deyimi içinde aynı sütun adını kullanamazsınız çünkü bir hata ile başarısız olur.
UPDATE dbo.Points
SET PointValue.X = 5, PointValue.Y = 99
WHERE ID = 3
UPDATE dbo.Points
SET PointValue.X = 5, PointValue.Y = 99
WHERE ID = 3
Tek tek her noktasını güncelleştirmek için mutator yöntemi noktası udt derleme oluşturmak gerekir. Sonra nesneyi güncelleştirme mutator yöntemi çağırabilirsiniz bir Transact-SQLupdate deyimi aşağıdaki de:
UPDATE dbo.Points
SET PointValue.SetXY(5, 99)
WHERE ID = 3
UPDATE dbo.Points
SET PointValue.SetXY(5, 99)
WHERE ID = 3
udt sütunda veri silme
udt verileri silmek için Transact-SQLdelete deyimi. Aşağıdaki deyimi tablo where yan tümcesinde belirtilen ölçütlere uyan tüm satırları siler. delete deyimi where yan tümcesinde atlarsanız, tablodaki tüm satırlar silinir.
DELETE FROM dbo.Points
WHERE PointValue = CAST('1,99' AS Point)
DELETE FROM dbo.Points
WHERE PointValue = CAST('1,99' AS Point)
Diğer satır değerleri olduğu gibi bırakarak udt sütun değerleri kaldırmak isterseniz güncelleştirme deyimini kullanın. Bu örnek, PointValue null olarak ayarlar.
UPDATE dbo.Points
SET PointValue = null
WHERE ID = 2
UPDATE dbo.Points
SET PointValue = null
WHERE ID = 2