我目前有一個在 SQL 中創建的視圖,它查看另一個資料庫,然后在另一個行程中使用該視圖。問題是2個不同的資料庫有排序規則沖突,一個是CI_AS,另一個是CP1_CI_AS。
當我將視圖鏈接到另一個資料庫時,我查看了網路并似乎找到了更改連接排序規則的解決方案,但我不能這樣做,因為它是產品中的一個內部程序,它允許我做的所有事情是給它一個視圖。
有沒有辦法可以更改視圖排序規則?
uj5u.com熱心網友回復:
你的問題有點不清楚,但也許你可以嘗試這樣的事情:
SET @tmp_character_set_client = (select VARIABLE_VALUE
from performance_schema.session_variables
where VARIABLE_NAME = 'character_set_client');
SET @tmp_character_set_results = (select VARIABLE_VALUE
from performance_schema.session_variables
where VARIABLE_NAME = 'character_set_results');
SET @tmp_collation_connection = (select VARIABLE_VALUE
from performance_schema.session_variables
where VARIABLE_NAME = 'collation_connection');
SET SESSION character_set_client = 'utf8';
SET SESSION character_set_results = 'utf8';
SET SESSION collation_connection = 'utf8_general_ci';
CREATE VIEW view_name
AS
select ...;
SET SESSION character_set_client = @tmp_character_set_client;
SET SESSION character_set_results = @tmp_character_set_results;
SET SESSION collation_connection = @tmp_collation_connection;
如果您有 MySQL8,請嘗試使用utf8mb4andutf8mb4_0900_ai_ci而不是utf8and utf8_general_ci。如果它仍然不起作用,請嘗試不同的排序規則
uj5u.com熱心網友回復:
您必須將 COLLATE 運算子應用于 SELECT 子句中的每一列。
例如...
隨著觀點:
CREATE VIEW V_CUST
AS
SELECT CustID, CustName, CustCity, CustDate
FROM Customer
GO
您需要將視圖重新創建為:
CREATE VIEW V_CUST
AS
SELECT CustID, CustName COLLATE French_BIN, CustCity COLLATE French_BIN, CustDate
FROM Customer
GO
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/422534.html
標籤:
下一篇:通過平衡獲得復雜的結果
