任何人都可以幫助我如何從多個逗號分隔值中檢查重複值。我有一個客戶表,並且可以插入多個以逗號分隔的聯繫號碼,我想檢查最後五位數字的重複值。有關參考檢查附加的屏幕截圖以及所需的輸出是 contact_no。算上 97359506775 - 2 390558073039-- 1 904462511251-- 1SQL:逗號分隔值的GROUP BY子句
0
A
回答
1
我會建議您重新設計數據庫架構,如果可能的話。您的當前數據庫違反First Normal Form,因爲您的屬性值不可分割。
創建一個表,其中id與單個電話號碼一起構成密鑰,此約束強制不發生重複。
0
我不記得了,但我會盡量把這個想法(這件事情,我已經是很久以前使用):
- 創建一個表值函數,將採取ID和電話號碼作爲輸入,然後生成一個ID和電話號碼錶並返回。
- 在傳遞ID和電話號碼的查詢中使用此函數。該查詢是這樣的,每個id你可以得到與電話號碼一樣多的行。需要使用CROSS APPLY/OUTER APPLY。
- 然後你可以檢查重複。
職能是這樣的:
CREATE FUNCTION udf_PhoneNumbers
(
@Id INT
,@Phone VARCHAR(300)
) RETURNS @PhonesTable TABLE(Id INT, Phone VARCHAR(50))
BEGIN
DECLARE @CommaIndex INT
DECLARE @CurrentPosition INT
DECLARE @StringLength INT
DECLARE @PhoneNumber VARCHAR(50)
SELECT @StringLength = LEN(@Phone)
SELECT @CommaIndex = -1
SELECT @CurrentPosition = 1
--index is 1 based
WHILE @CommaIndex < @StringLength AND @CommaIndex <> 0
BEGIN
SELECT @CommaIndex = CHARINDEX(',', @Phone, @CurrentPosition)
IF @CommaIndex <> 0
SELECT @PhoneNumber = SUBSTRING(@Phone, @CurrentPosition, @CommaIndex - @CurrentPosition)
ELSE
SELECT @PhoneNumber = SUBSTRING(@Phone, @CurrentPosition, @StringLength - @CurrentPosition + 1)
SELECT @CurrentPosition = @CommaIndex + 1
INSERT INTO @UsersTable VALUES(@Id, @PhoneNumber)
END
RETURN
END
然後運行CROSS APPLY查詢:
SELECT
U.*
,UD.*
FROM yourtable U CROSS APPLY udf_PhoneNumbers(Userid, Phone) UD
這會給你上,您可以運行查詢查找重複表。
相關問題
- 1. SQL服務器:GROUP BY子句,以獲得逗號分隔值
- 2. GROUP BY子句,以獲得在逗號分隔值sqlite的
- 3. SQL逗號分隔一行Group By子句
- 4. MySQL GROUP BY每個逗號分隔值
- 5. 使用SELECT子句的逗號分隔列表中的ORDER BY
- 6. GROUP BY子句 - 的Oracle SQL
- 7. SQL逗號分隔值
- 8. ORDER BY mysql逗號分隔值
- 9. SQL Server CE GROUP BY子句
- 10. GROUP BY語句中以逗號分隔的整數是什麼完成的?
- 11. 包含逗號分隔值的sql列
- 12. GROUP BY逗號分隔的成員名單
- 13. 逗號分隔值分隔
- 14. IN子句中的逗號分隔值case case語句錯誤
- 15. 動態SQL逗號分隔值查詢
- 16. 逗號分隔值單倒引號和逗號分隔值
- 17. 用逗號分隔值的分組子句
- 18. 逗號分隔值
- 19. 將表值作爲GROUP BY中的逗號分隔列表返回
- 20. 返回逗號分隔值SQL
- 21. 逗號分隔的SQL
- 22. SQL查詢與逗號分隔值
- 23. MySQL的逗號分隔值
- 24. SQL服務器:逗號分隔的其他逗號分隔欄
- 25. 用於逗號分隔值的sql中的exec語句
- 26. ORDER BY在GROUP BY子句
- 27. SQL語句GROUP BY
- 28. 解析逗號分隔值
- 29. GROUP BY子句不
- 30. 以逗號分隔的分隔值
請附上屏幕截圖 – dhS
要麼規範化您的模式,要麼不打擾使用RDBMS – Strawberry