我正在做一個專案,我必須添加使用 dot net core 搜索電話號碼的功能。在注冊時,我們使用國家代碼將電話號碼存盤在 SQL Server 中,例如:“ 923007418819”。
因此,如果用戶搜索的電話號碼與03007418819資料庫中存盤的資料不匹配,則回傳 null。
我想要的主要是如果用戶03007418819像這樣輸入電話號碼,它會使用最后 10 位數字進行搜索。
如何做呢?
uj5u.com熱心網友回復:
首先,您必須使用反轉的電話號碼創建一個計算的持久列,如下所示:
ALTER TABLE T_PHONE ADD _PHONE_NUMBER_REVERSE AS REVERSE(PHONE_NUMBER) PERSISTED;
其次,您必須為表演搜索創建索引:
CREATE INDEX X_001 ON T_PHONE (_PHONE_NUMBER_REVERSE);
最后,您必須使用像這樣的 WHERE 子句:
WHERE _PHONE_NUMBER_REVERSE LIKE REVERSE('03007418819') '%'
這是最有效的方法!
uj5u.com熱心網友回復:
您可以使用SUBSTRING:
SELECT SUBSTRING([your column name], 3, 10) AS phone,
FROM [your table name]
WHERE [your column name] = [search term];
uj5u.com熱心網友回復:
不同的方法:
從根本上解決此問題的最佳方法是以特定格式將所有用戶的電話號碼保存在資料庫中,例如00[countrycode][rest]
創建一個助手,將用戶輸入的任何有效電話號碼格式化為您在注冊時想要的格式。所有電話號碼將被格式化,然后保存在資料庫中。(然后資料庫將被格式化和清理)
當用戶嘗試登錄時,將首先呼叫同一個助手并格式化用戶輸入的數字,然后您可以輕松地在資料庫中搜索,無需任何魔法。通過這個微小的修改,您也可以贏得資料庫索引。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/460903.html
