任何人都可以幫助我如何從多個逗號分隔值中檢查重複值。我有一個客戶表,並且可以插入多個以逗號分隔的聯繫號碼,我想檢查最後五位數字的重複值。有關參考檢查附加的屏幕截圖以及所需的輸出是 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. MySQL GROUP BY每個逗號分隔值
- 2. SQL逗號分隔值
- 3. ORDER BY mysql逗號分隔值
- 4. GROUP BY語句中以逗號分隔的整數是什麼完成的?
- 5. 包含逗號分隔值的sql列
- 6. 逗號分隔值分隔
- 7. IN子句中的逗號分隔值case case語句錯誤
- 8. 動態SQL逗號分隔值查詢
- 9. 逗號分隔值單倒引號和逗號分隔值
- 10. 用逗號分隔值的分組子句
- 11. 逗號分隔值
- 12. SQL查詢與逗號分隔值
- 13. SQL服務器:逗號分隔的其他逗號分隔欄
- 14. 用於逗號分隔值的sql中的exec語句
- 15. ORDER BY在GROUP BY子句
- 16. 解析逗號分隔值
- 17. GROUP BY子句不
- 18. 使用帶groupby子句的lambda.string.join返回逗號分隔值
- 19. GROUP BY with Where子句中的SQL
- 20. 在SQL Server替換逗號分隔值
- 21. SQL服務器:2逗號分隔值
- 22. 逗號逗號分隔值在Oracle中
- 23. SQL與逗號分隔
- 24. 在Oracle SQL語句中構建逗號分隔值列表
- 25. 如何使用從列逗號分隔值至IN子句
- 26. SQL多標識符到GROUP BY子句
- 27. SQL Server Management Studio GROUP BY子句SHORTCUT
- 28. SQL SUM和GROUP BY基於WHERE子句
- 29. SQL GROUP BY和WHERE子句中PERL
- 30. GROUP BY子句中的MySQL
請附上屏幕截圖 – dhS
要麼規範化您的模式,要麼不打擾使用RDBMS – Strawberry